Department of Computer and Information Sciences

cis.uab.edu

Chair: Yuliang Zheng

The Department of Computer and Information Sciences (CIS) offers a BA degree in CIS, a BS degree in CIS, a BS degree in Digital Forensics (offered jointly with Justice Sciences), and a minor in CIS. The BS degree in CIS is accredited by the Computing Accreditation Commission of ABET, abet.org, and is designed for students desiring a more in-depth exploration of computer science, giving students a broad background in the structure and theory of information, programming methodologies, and the hardware and software of computer systems. There is also a concentration that offers an opportunity for specialization in computer networking. The BA degree in CIS is designed for students wishing to apply the tools and techniques of computer science to solving interdisciplinary problems in science, arts, humanities, business, and other areas, equipped with T-shaped knowledge and skill sets. The BS in Digital Forensics is an interdisciplinary degree that prepares graduates for a professional career in the field of digital forensics and cyber security. Minors are available for students who are not CIS majors but who expect to use the computer in the application area of their major field. For more information, see the CIS department web site at cis.uab.edu. ​

Requirements for students transferring to the CIS major from other programs within UAB

Students admitted to an undergraduate program at UAB may transfer to CIS provided they have earned a UAB GPA of 2.0 or better.

Requirements for students transferring to the CIS major from other institutions

Transfer students from other institutions may transfer to the CIS program provided they have earned a GPA of 2.0 or better. If this requirement is not met, transfer students must transfer as a Liberal Arts major in the College of Arts and Sciences, meet the GPA requirement, and then apply to become a CIS major.

Grade point average

For both the major and minor, a grade of C or better is required in each of the computer and information sciences courses.  If a student receives a grade D or F in any CIS course, then the student will only be allowed one chance to retake that course and pass it (grade C or better).

CIS courses taken at another institution for which a grade of D was received may not be counted toward the CIS major or the CIS minor.

All CIS majors must maintain a GPA of 2.2 or better in all CIS courses taken. If the CIS GPA falls below 2.2, then the student will be put on probation and student must raise his or her CIS GPA to 2.2 or above within a year after being placed on probation. At the end of the probation term, if the CIS GPA is not at or above 2.2, then the student will be dismissed from the major, and be reclassified as an undeclared major in the College of Arts and Sciences. Note that this requirement is in addition to the minimum UAB GPA of 2.0 or better required to be in good standing. A student who is dismissed from the CIS major as described here may reapply to be CIS major provided the student has raised his or her CIS GPA to 2.2 or higher and also has a UAB GPA to 2.0 or better.

300 and 400-level courses

In the CIS major,  at least 12 semester hours of CIS courses at the 300 level or above must be taken at UAB. Any CIS course at the 300 level or above can be taken to satisfy the 12 semester hour CIS elective credit.  A maximum of 3 semester hours may be obtained in Directed Readings. Although not required, CIS majors have the option to structure their 12 semester hours of CIS program electives as a specialization in Computer Networking. Course substitutions may be made within this specialization with CIS advisor approval. 

CIS courses at the 400-level and above are normally restricted to CIS Majors.  Non-majors may register for such courses only with the specific permission of the specific course Instructor.

Graduate Programs

The Department of Computer and Information Sciences offers graduate study leading to the Master of Science in Computer and Information Sciences, and Doctor of Philosophy in Computer and Information Sciences. We also offer, jointly with Justice Sciences, a Master of Science degree in Computer Forensics and Security Management.  Further information may be obtained from the department or the UAB Graduate School Catalog.

Advanced undergraduates with a CIS GPA of 3.0 or better may take graduate courses with the permission of the instructor.

Accelerated Master of Science Program

The Department of Computer and Information Sciences offers an opportunity to earn a B.S. and an M.S. degree in a total of five years. This program offers qualified students mentorship during undergraduate study. The student works closely with a faculty member in an area of intensive research that prepares the student for a Ph.D. degree program in computer science or a future career in computer science.  Admission to the program requires a minimum 3.5 GPA, three letters of recommendation from faculty, including one from their mentor, and an interview with the admissions committee.  Students should apply for entrance into the accelerated M.S. program by the end of their sophomore year.  If the student does not enter with AP credits, it may be necessary to take some summer courses.  For additional information, please contact Dr. Chengcui Zhang, Graduate Program Director, at (205) 934-2213 or czhang02@uab.edu.

UABTeach

The CIS Department participates in UABTeach.  For more information, see the UABTeach website at https://www.uab.edu/uabteach/

Bachelor of Arts with a Major in Computer and Information Sciences

RequirementsHours
A grade of C or better is required in all of the following courses. At least 12 hours of CS courses at the 300-level or above must be taken at UAB
Mathematics Requirement
MA 125Calculus I4
Requireed CIS Courses
CS 103
103L
Introduction to Computation
and Introduction to Computation Lab
4
CS 203
203L
Object-Oriented Programming
and Object-Oriented Programming Lab
4
CS 250Discrete Structures3
CS 303Algorithms and Data Structures4
CS 330Computer Organization and Assembly Language Programming3
CS 499Senior BS Capstone3
Complete one of the following courses:3
Software Engineering
Operating Systems
CIS Electives 112
Select four courses in Computer and Information Sciences (CIS), each course at the 300-level or above, and each course at least 3 hours. One of these 4 courses must be at the 400-level or above.
A minor is required
If a student completes a double major, the minor requirement is waived.
Total Hours40
1

Students may take a maximum of 3 hours combined of the following independent study courses: CS 398 CS 399, CS 496.

Bachelor of Science with a Major in Computer and Information Sciences

RequirementsHours
Mathematics Requirements 1, 2
MA 125Calculus I4
MA 126Calculus II4
Select two of the following:6-7
Calculus III
Introduction to Differential Equations
Introduction to Linear Algebra
Scientific Programming 3
Mathematical Modeling
Algebra I: Linear
Advanced Calculus I
Vector Analysis
Complex Analysis
Operations Research I
Differential Geometry I
Geometry I
Probability
Natural Sciences Requirement 1
12 semester hours are required in two different laboratory sciences. These 12 hours must include one of the following two-course sequences, and all 12 hours must be chosen from the following courses12
Introductory Biology I
and Introductory Biology II
General Chemistry I
and General Chemistry I Laboratory
General Chemistry II
and General Chemistry II Laboratory
General Physics I
and General Physics II
Required Computer and Information Sciences Courses 1
CS 103Introduction to Computation4
CS 203Object-Oriented Programming4
CS 250Discrete Structures3
CS 303Algorithms and Data Structures4
CS 330Computer Organization and Assembly Language Programming3
CS 350Automata and Formal Languages3
CS 355Probability and Statistics in Computer Science3
CS 401Programming Languages3
CS 420Software Engineering3
CS 433Operating Systems3
CS 499Senior BS Capstone3
Electives
Complete twelve hours in Computer and Information Sciences courses at the 300-level or above. A maximum of 3 hours combined of the following independent courses may be taken: CS398, CS399, CS496. A maximum of two of the following courses may be used:12
Introduction to Microprocessors
Digital Systems Design
Scientific Programming 3
Minds and Machines
If taking the Computer Networking specialization, the twelve hours in electives must be chosen from the following list:
Networking
Introduction to Databases
Distributed Systems
Network Programming
Computer Security
Digital Media Forensics
Cloud Security
Total Hours74-75
1

A grade of "C" or better must be earned in each course.

2

Completion of MA 125 or MA 126 automatically satisfies the Area III: Mathematics Requirement.

3

 Can be counted towards either Math requirement or CS elective not both.

Additional Requirements

General Electives

Students must take general electives to reach the 120 semester hour requirement. These must include CMST 101 Public Speaking and PHL 115 Contemporary Moral Issues

Bachelor of Science in Digital Forensics 

Proposed Program of Study for a Major in Computer and Information Sciences

Freshman
First TermHoursSecond TermHours
CS 1034CS 2503
MA 1254MA 1264
Laboratory Science I4Laboratory Science II4
EH 101 (Area I)3EH 102 (Area I)3
CAS 1121 
 16 14
Sophomore
First TermHoursSecond TermHours
CS 2034CS 3034
Math Elective3CS 3553
Lab Science III4Area II Literature3
Area IV course 13Area IV course 23
 General elective3
 14 16
Junior
First TermHoursSecond TermHours
CS 3303CS 4013
CS 3503CS elective3
CMST 101 (Area II)3PHL 115 (Area II)3
Area IV 3Math elective3
General elective3General elective3
 15 15
Senior
First TermHoursSecond TermHours
CS 4203CS 4333
CS 4993CS elective3
CS Elective 3CS elective3
Area IV3Area II: Fine Art3
General elective3General elective3
 15 15
Total credit hours: 120
 

 Minor in Computer and Information Sciences

RequirementsHours
Required CIS courses. Must earn a grade of C or better
CS 103Introduction to Computation4
CS 203Object-Oriented Programming4
CS 250Discrete Structures3
CS 303Algorithms and Data Structures4
CIS Electives
Select 3 hours from 300-level or higher CIS courses (CS 330 is recommended)3
Total Hours18

Note: A student who takes CS 330 as the elective will be ready to apply directly to the CIS M.S. program.

GPA Requirement and Residency

A student must have at least a 2.0 average in all CIS courses attempted and a 2.0 average in all CIS courses taken at UAB.  The current UAB course repeat policy will be used in calculating the grade point average.  A minimum of six semester hours in the minor must be taken at UAB.  Transfer students should be aware of the Department of Computer and Information Science’s policy regarding transfer credit. 

Honors Program: Computer and Information Sciences

Purpose

The Computer and Information Sciences Honors Program offers outstanding, highly motivated students the opportunity to develop research skills in preparation for graduate work or a professional career.

Eligibility

In order to be accepted into the Computer and Information Sciences Honors program, a student must:

  • have earned a 3.5 GPA in computer and information sciences (CS) courses;
  • have earned a 3.0 GPA overall;
  • have completed 18 semester hours in CS courses;
  • have arranged with a faculty sponsor in Computer and Information Sciences to do a research project.

Requirements

Students in the Computer and Information Sciences Honors Program will be required to have the following:

  • during their first semester in the honors program, enroll in exactly 1 semester hour of Undergraduate Honors Research (CS 398), during which a formal research proposal will be developed and submitted, including an introduction, proposed methods, and relevant literature citation
  • a total of 3 semester hours in Undergraduate Honors Research (CS 398) with each semester hour involving a minimum of three hours of laboratory work per week during the semester of enrollment;
  • a formal written report in the form of a scientific paper; and
  • an oral or poster presentation at a Computer and Information Sciences departmental seminar.

In some instances, it will be recommended or required that Computer and Information Sciences Honors students give a formal presentation of their work at a scientific meeting.

Benefits

In addition to the educational and career benefits of participating in the Computer and Information Sciences Honors program, students who complete the program will graduate “With Honors in Computer and Information Sciences.”

Contact

For more information and/or admission to the Computer and Information Sciences Honors program, contact:

Dr. John K. Johnstone
1300 University Blvd. Room 125, Campbell Hall
Birmingham, AL 35294-1170
Telephone (205) 975-5633

E-mail: jkj@uab.edu
 

CS-Computer Science Courses

CS 103. Introduction to Computation. 4 Hours.

An introduction to computation and computational thinking, explored through programming in Python. Python is a scripting programming language that encourages exploration and quick development. This course assumes no prior programming experience and is appropriate for students in any discipline, such as linguistics, biology, business, and art. The student will leave the course with the ability to write clear and well-designed programs that solve interesting problems, and an appreciation of the power and beauty of computation. Strings, tuples, lists, dictionaries; branching, iteration, abstraction through functions, recursion, higher order programming; insertion sort, binary search, turtle graphics, binary numbers, introduction to classes. Principles of software development are emphasized, including specification, documentation, testing, debugging, exception handling. This course has a laboratory component.

CS 103L. Introduction to Computation Lab. 0 Hours.

Laboratory to accompany CS103.

CS 130. Introduction to Cyber Security. 3 Hours.

This course introduces students to the rapidly evolving and critical international arenas of privacy, information security, and critical infrastructure, and is designed to develop knowledge and skills for security of information and information systems at both individual and organizational levels. Stakeholders of information security and privacy. Framework of information security and privacy. Nature of common information hazards. Common cyber attacks and counter-measures. Operation and limitations of information and system safeguards. Ethics, privacy, policy and information decisions. Legal aspects, professional practices, and standards for information security and privacy. Security of national critical infrastructures.

CS 199. Special Topics in Computer Science. 1-3 Hour.

Selected topics in Computer Science. This course may or may not have a laboratory component or be taught online.

CS 199L. Special Topics Lab. 0 Hours.

Project oriented hands-on approach lab. Mandatory first day of attendance.

CS 203. Object-Oriented Programming. 4 Hours.

A second course in computational thinking, through the lens of object oriented programming. Fundamental concepts of object oriented programming and basic data structures. Types, classes, objects, inheritance, containers, OO software design, program structure and organization, reflection, generic programming. Lists, trees, stacks, queues, heaps, search trees, hash tables, graphs, complexity analysis. This course has a laboratory component.
Prerequisites: CS 103 [Min Grade: C] or CS 201 [Min Grade: C]

CS 203L. Object-Oriented Programming Lab. 0 Hours.

Laboratory to accompany CS203.

CS 222. Mobile Application Development. 3 Hours.

Introduction to application development for mobile devices including those built on Android, iOS and Windows Phone using a popular mobile application development platform such as Cordova. Covers unique requirements and constraints of mobile applications, foundations of mobile application development, syntax and semantics of web languages such as HTML, CSS and related frameworks, client side scripting including JavaScript and associated techniques such as jQuery and Ajax, principles for the design and evaluation of mobile user interfaces, storage and sensors. Lecture and laboratory.
Prerequisites: CS 103 [Min Grade: C]

CS 222L. Mobile Application Development Laboratory. 0 Hours.

Laboratory to accompany CS 222.

CS 250. Discrete Structures. 3 Hours.

Discrete mathematics for computer science, including elementary propositional and predicate logic, sets, relations, functions, counting, elementary graph theory, proof techniques including proof by induction, proof by contradiction, and proof by construction.
Prerequisites: (CS 103 [Min Grade: C] or CS 201 [Min Grade: C]) and (MA 106 [Min Grade: C] or MA 107 [Min Grade: C] or MA 125 [Min Grade: C] or MA 225 [Min Grade: C] or MA 226 [Min Grade: C] or MA 126 [Min Grade: C] or MA 227 [Min Grade: C])

CS 303. Algorithms and Data Structures. 4 Hours.

Techniques for design and analysis of algorithms; efficient algorithms for sorting, searching, graphs, and string matching; and design techniques such as divide-and-conquer, recursive backtracking, dynamic programming, and greedy algorithms.
Prerequisites: CS 250 [Min Grade: C] and (CS 203 [Min Grade: C] or CS 302 [Min Grade: C])

CS 303L. Algorithms and Data Structures Laboratory. 0 Hours.

Project oriented hands-on approach to accompany CS 303.

CS 306. Programming in Perl. 1 Hour.

Basic syntax and data types, data structures, functions, scoping, regular expressions and pattern matching, libraries and modules, program composition, best practices.
Prerequisites: CS 203 [Min Grade: C] and CS 250 [Min Grade: C]

CS 309. Programming in Mathematica. 1 Hour.

Syntax, semantics and concepts of programming in Mathematica: expressions, lists, patterns and rules, functional programming, procedural programming, recursion, numeric, strings, graphics and visualization, dynamic expressions, optimization, and applications.
Prerequisites: CS 203 [Min Grade: C] and CS 250 [Min Grade: C]

CS 330. Computer Organization and Assembly Language Programming. 3 Hours.

Register-level architecture of modern digital computer systems, digital logic, machine-level representation of data, assembly-level machine organization, and alternative architectures. Laboratory emphasizes machine instruction execution, addressing techniques, program segmentation and linkage, macro definition and generation, and computer solution of problems in assembly language.
Prerequisites: CS 250 [Min Grade: C] and (CS 203 [Min Grade: C] or CS 302 [Min Grade: C])

CS 330L. Computer Organization and Assembly Language Programming Lab. 0 Hours.

Laboratory to accompany CS330.

CS 333. System Programming in C. 3 Hours.

Unix architecture and internals with an emphasis on Linux, shell scripting, distributions of Linux for various computing platforms including large and desktop computers, and embedded computing devices, introduction to the C programming language, system programming in C covering signals and process control, networking, I/O, concurrency and synchronization, memory allocation, threads, debugging, library development and usage.
Prerequisites: CS 250 [Min Grade: C] and (CS 203 [Min Grade: C] or CS 302 [Min Grade: C])

CS 334. Networking. 3 Hours.

Underlying network technology, including IEEE 802.11. Interconnecting networks using bridges and routers. IP addresses and datagram formats. Static and dynamic routing algorithms. Control messages. Subnet and supernet extensions. UDP and TCP. File transfer protocols. E-mail and the World Wide Web. Network address translation and firewalls. Mandatory weekly Linux-based lab.
Prerequisites: CS 250 [Min Grade: C] and (CS 203 [Min Grade: C] or CS 302 [Min Grade: C])

CS 334L. Networking Lab. 0 Hours.

Project oriented hands-on approach to accompany CS 334. Mandatory first day of class.

CS 350. Automata and Formal Languages. 3 Hours.

Finite-state automata and regular expressions, context-free grammars and pushdown automata, computability.
Prerequisites: CS 250 [Min Grade: C] and (MA 125 [Min Grade: C] or MA 225 [Min Grade: C]) and (CS 203 [Min Grade: C] or CS 302 [Min Grade: C])

CS 355. Probability and Statistics in Computer Science. 3 Hours.

Introduction to probability and statistics with applications in computer science. Counting, permutations and combinations. Probability, conditional probability, Bayes theorem. Standard probability distributions. Measures of central tendency and dispersion. Central Limit Theorem. Hypothesis testing. Random number generation. Random algorithms. Estimating probabilities by simulation.
Prerequisites: CS 250 [Min Grade: C] and (CS 203 [Min Grade: C] or CS 302 [Min Grade: C])

CS 380. Scientific Computing. 3 Hours.

Scientific computing is the foundation of many key areas of computer science (e.g., machine learning, graphics, vision, cryptography) and of companies like Google. A main object of study in this course is the matrix, including matrix computation (matrix multiplication, null space, solution of linear systems, least squares) and applications (image filtering, face detection, compression). Other topics may include wavelets, root finding, quadrature, and Fourier transform.
Prerequisites: CS 203 [Min Grade: C] and CS 250 [Min Grade: C]

CS 391. Special Topics. 1-3 Hour.

Selected Topics in Computer Science.

CS 392. Special Topics. 1-3 Hour.

Selected Topics in Computer Science.

CS 398. Undergraduate Honors Research. 1-3 Hour.

Research project under supervision of faculty sponsor. Prerequisite: 18 semester hours in computer and information sciences with grade point average of 3.5 in computer and information sciences and permission of instructor.

CS 399. Directed Readings. 1-3 Hour.

Selected readings, research and project development under the direction of a faculty member. Permission of instructor.
Prerequisites: CS 203 [Min Grade: D] and CS 250 [Min Grade: D]

CS 401. Programming Languages. 3 Hours.

CS401 is a programming language overview course. The course will discuss computability, lexing, parsing, type systems, and ways to formalize a language's semantics. The course will introduce students to major programming paradigms, such as functional programming and logic programming, and their realization in programming languages. Students will solve problems using different paradigms and study the impact on program design and implementation. The course enables students to assess strengths and weaknesses of different languages for problem solving.
Prerequisites: CS 303 [Min Grade: C] and CS 350 [Min Grade: C]

CS 401L. Programming Languages Laboratory. 0 Hours.

Laboratory to accompany CS401.

CS 402. Compiler Design. 3 Hours.

Study the design and implementation of compilers, including front-end (lexer, parser, type checking), to mid-end (intermediate representations, control-flow analysis, dataflow analysis, and optimizations) to back-end (code generation). Students will get hands-on experience by implementing several compiler components.
Prerequisites: CS 303 [Min Grade: C] and CS 350 [Min Grade: C]

CS 403. Cloud Computing. 3 Hours.

Introduction to cloud computing, definition, history, models of service delivery, IaaS/PaaS/SaaS clouds, Public/private/Hybrid clouds, cloud architectures, cloud storage, data center design issues, cloud programming systems, MapReduce programming, security and privacy issues, application development on commercial Cloud Computing Platforms, building mobile apps with a cloud based backend, using cloud APIs in PaaS/IaaS/SaaS platforms.
Prerequisites: CS 303 [Min Grade: C] and (MA 125 [Min Grade: C] or MA 225 [Min Grade: C])

CS 410. Introduction to Databases. 3 Hours.

Relational model of databases, structured query language, normalized structure of database management systems based on relational model, and security and integrity of databases.
Prerequisites: CS 303 [Min Grade: C] and (MA 125 [Min Grade: C] or MA 225 [Min Grade: C])

CS 415. Multimedia Databases. 3 Hours.

Multimedia information processing, multimedia database architecture, multimedia database retrieval, semantic models for multimedia databases.
Prerequisites: CS 303 [Min Grade: C] and (MA 125 [Min Grade: C] or MA 225 [Min Grade: C])

CS 416. Big Data Programming. 3 Hours.

Introduction to Big Data, Properties of Big Data, platforms, programming models, applications, business analytics programming, big data processing with Python, R, and SAS, MapReduce programming with Hadoop.
Prerequisites: CS 303 [Min Grade: C] and (MA 125 [Min Grade: C] or MA 225 [Min Grade: C])

CS 417. Database Security. 3 Hours.

Database fundamentals, introduction to database security, overview of security models, access control models, covert channels and inference channels, MySQL security, Oracle security, Oracle label security, developing a database security plan, SQL server security, security of statistical databases, security and privacy issues of data mining, database applications security, SQL injection, defensive programming, database intrusion prevention, audit, fault tolerance and recovery, Hippocratic databases, XML security, network security, biometrics, cloud database security, big database security.
Prerequisites: CS 303 [Min Grade: C] and (MA 125 [Min Grade: C] or MA 225 [Min Grade: C])

CS 419. Investigating Online Crimes. 3 Hours.

Introduction to cyber-investigative techniques involving network forensics. Students will develop and learn to apply new programs and techniques to automatically evaluate digital evidence from network packet captures, emails, server logs, social media, darknets and online forums related to cyber crime cases from both a law enforcement and incident response perspective.
Prerequisites: CS 303 [Min Grade: C] and (MA 125 [Min Grade: C] or MA 225 [Min Grade: C])

CS 420. Software Engineering. 3 Hours.

Design and implementation of large-scale software systems, software development life cycle, software requirements and specifications, software design and implementation, verification and validation, project management and team-oriented software development. Lecture and laboratory.
Prerequisites: CS 303 [Min Grade: C] and (MA 125 [Min Grade: C] or MA 225 [Min Grade: C])

CS 420L. Software Engineering Laboratory. 0 Hours.

Laboratory to accompany CS 420.

CS 421. Advanced Web Application Development. 3 Hours.

Introduction to web application design and development. Includes traditional web applications utilizing server-side scripting as well as client/server platforms. Covers responsive design for both mobile and desktop users, as well as hands on server provisioning and configuration. Other topics include web security problems and practices, authentication, database access, application deployment and Web API design, such as REpresentational State Transfer (REST).
Prerequisites: CS 303 [Min Grade: C] and (MA 125 [Min Grade: C] or MA 225 [Min Grade: C])

CS 421L. Advanced Web Application Development Laboratory. 0 Hours.

Laboratory to accompany CS 421.

CS 423. Network Security. 3 Hours.

Conventional network security (symmetric and public-key cryptography). Message encryption and authentication. Secure communication between computers in a hostile environment, including E-mail (PGP), virtual private networks (IPSec), remote access (SSH), and E-commerce (SSL), firewalls, intrusion detection and prevention, security of IEEE 802.11 wireless networks (WEP, WPA). Mandatory weekly Linux-based lab.
Prerequisites: CS 303 [Min Grade: C] and (MA 125 [Min Grade: C] or MA 225 [Min Grade: C])

CS 423L. Network Security Laboratory. 0 Hours.

Laboratory to accompany CS423.

CS 425. Metrics and Performance. 3 Hours.

The theory and practice of metrics and performance. Querying theory and statistical analysis.
Prerequisites: CS 303 [Min Grade: C] and (MA 125 [Min Grade: C] or MA 225 [Min Grade: C])

CS 426. Secure Software Development. 3 Hours.

Why and how software fails, characteristics of secure and resilient software, life cycle of secure software development, metrics and models for secure software maturity, design methodology, best practices for secure programming, secure software for mobile computing, cloud computing and embedded systems, methodology for testing and validation.
Prerequisites: CS 303 [Min Grade: C] and (MA 125 [Min Grade: C] or MA 225 [Min Grade: C])

CS 427. Software Design and Integration. 3 Hours.

This course provides hands-on experience in the design and integration of software systems. Component-based technology, model-driven technology, service-oriented technology, and cloud technology are all explored. Software design basics, including the decomposition of systems into recognizable patterns, the role of patterns in designing software and design refactoring, and attributes of good design. Agile culture, CASE tools, tools for continuous integration, build, testing, and version control.
Prerequisites: CS 420 [Min Grade: C]

CS 429. Software Engineering Research Project. 3 Hours.

This is a project-based research course in software engineering, involving significant implementation and experimentation under the supervision of a faculty member. A project proposal must be accepted before registering for this course.
Prerequisites: CS 420 [Min Grade: C]

CS 430. Computer Architecture. 3 Hours.

Introduction to computer architecture, including memory subsystems, direct-mapped and set-associative cache and multi-level cache subsystems, direct- access devices including RAID and SCSI disk drives, processor pipelining including super-scalar and vector machines, parallel architectures including SMP, NUMA and distributed memory systems, Interrupt mechanisms, and future microprocessor design issues.
Prerequisites: CS 330 [Min Grade: C] and CS 303 [Min Grade: C] and (MA 125 [Min Grade: C] or MA 225 [Min Grade: C])

CS 431. Distributed Systems. 3 Hours.

Introduction to distributed systems, distributed hardware and software concepts, communication, processes, naming, synchronization, consistency and replication, fault tolerance, security, client/server computing, web technologies, enterprise technologies.
Prerequisites: CS 303 [Min Grade: C] and (MA 125 [Min Grade: C] or MA 225 [Min Grade: C])

CS 432. Parallel Computing. 3 Hours.

Introduction to parallel computing architectures and programming paradigms. Theoretical and practical aspects of parallel programming and problem solving. Design, development, analysis, and evaluation of parallel algorithms.
Prerequisites: (CS 303 [Min Grade: C] and CS 330 [Min Grade: C]) and (MA 125 [Min Grade: C] or MA 225 [Min Grade: C])

CS 433. Operating Systems. 3 Hours.

Introduction to operating systems. This course looks at the internal design and operation of a modern operating system. Topics include interrupt handling, process scheduling, memory management, virtual memory, demand paging, file space allocation, file and directory management, file/user security and file access methods. Several comparisons among current operating systems are used, with attention to Windows and Unix in particular.
Prerequisites: CS 330 [Min Grade: C] and CS 303 [Min Grade: C] and (MA 125 [Min Grade: C] or MA 225 [Min Grade: C])

CS 433L. Operating Systems Laboratory. 0 Hours.

Laboratory to accompany CS 433.

CS 434. Virtualization. 3 Hours.

Theory and practice of virtualization. Origins, history, technical and economic motivations. Relationship to network operating systems and operating system architecture. Simulation, Emulation, Virtualization of CPUs, networks, storage, desktops, memory, devices, and combinations thereof. Different approaches to virtualization, including hardware assists and software-only techniques. Techniques, approaches, and methodologies for scale-out and scale-up computing, including security, performance and economic concerns.
Prerequisites: CS 433 [Min Grade: C] and CS 303 [Min Grade: C] and (MA 125 [Min Grade: C] or MA 225 [Min Grade: C])

CS 435. Network Programming. 3 Hours.

Remote procedure call and client-server mechanisms. Protocol definition and compilation; client and server stubs and application code; transport independence; multiple client and server systems. Applications, e.g., remote database query and update and image filtering and archiving; systems programming and file systems contexts.
Prerequisites: CS 334 [Min Grade: C] and CS 303 [Min Grade: C] and (MA 125 [Min Grade: C] or MA 225 [Min Grade: C])

CS 436. Computer Security. 3 Hours.

Study of the breadth of major computer security topics including cyber threats, malware, information assurance, authorization, applied cryptography, web security, mobile and wireless security, network security, systems/software security, database and storage security, user-centered security, and best security practices and countermeasures.
Prerequisites: CS 303 [Min Grade: C] and (MA 125 [Min Grade: C] or MA 225 [Min Grade: C])

CS 437. Digital Media Forensics. 3 Hours.

Digital media forensics addresses all stored digital evidence types faced by cyber security professionals and computer forensics examiners. Students will learn to analyze character encoding, file formats, and digital media, including hard drives, smartphones and other portable devices, and cloud-hosted evidence, as well as disk acquisition, duplication and evidence preservation techniques and how to apply these techniques in typical criminal investigation scenarios.
Prerequisites: CS 303 [Min Grade: C] and CS 330 [Min Grade: C] and (MA 125 [Min Grade: C] or MA 225 [Min Grade: C])

CS 437L. Digital Media Forensics Lab. 0 Hours.

Laboratory to accompany CS 437.

CS 440. Introduction to Bioinformatics. 3 Hours.

This course introduces students to the field of bioinformatics, emphasizing the application of computational tools and methodology in genomics, analysis of protein functions and structures, and DNA sequencing. Students learn how to use a high level programming language such as Python together with software tools such as BLAST and ArrayTrack to solve bioinformatics problems.
Prerequisites: CS 303 [Min Grade: C] and (MA 125 [Min Grade: C] or MA 225 [Min Grade: C])

CS 441. Algorithms in Bioinformatics. 3 Hours.

This course covers the design and analysis of algorithmic techniques applied in bioinformatics. Topics include sequence comparison, alignment and matching, suffix tree, sequence database search, phylogenetic tree, genome rearrangement, motif finding, RNA prediction, and peptide sequencing.
Prerequisites: CS 303 [Min Grade: C] and (MA 125 [Min Grade: C] or MA 225 [Min Grade: C])

CS 442. Mobile and Wireless Security. 3 Hours.

Mobile/wireless devices are ubiquitous, raising the potential for many cyber threats. This course examines security vulnerabilities inherent in many existing and emerging mobile and wireless systems, ranging from smartphones to wearables and RFID tags. In addition to exposing security vulnerabilities, defensive mechanisms to address these vulnerabilities drawn from existing deployments and research literature will be studied.
Prerequisites: CS 303 [Min Grade: C] and (MA 125 [Min Grade: C] or MA 225 [Min Grade: C])

CS 443. Cloud Security. 3 Hours.

Definition of cloud computing, cloud computing models, privacy, authenticity and integrity of outsourced data, proof of data possession / retrievability, cloud forensics, malware analysis as a service, remote verification of capability and reliability, proof of availability, economic attacks on clouds and outsourced computing, virtual machine security, trusted computing technology and clouds, verifiable resource accounting, cloud-centric regulatory compliance issues and mechanisms, business and security risk models, secure MapReduce, applications of secure cloud computing, private information retrieval and cloud cartography.
Prerequisites: CS 303 [Min Grade: C] and (MA 125 [Min Grade: C] or MA 225 [Min Grade: C])

CS 444. Network Forensics. 3 Hours.

This course covers concepts and methods involved in unraveling network intrusions, DDOS, and other untoward network behavior.
Prerequisites: CS 303 [Min Grade: C] and CS 336 [Min Grade: C] and (MA 125 [Min Grade: C] or MA 225 [Min Grade: C])

CS 445. Modern Cryptography. 3 Hours.

Theory and practices of modern cryptographic techniques, algorithms and protocols, including formal analysis. Secret key encryption algorithms, public key encryption algorithms, stream ciphers, one-way hashing algorithms, authentication and identification, digital signatures, signcryption, key establishment and management, secret sharing and data recovery, zero-knowledge proofs, public key infrastructures, efficient implementation, cryptanalytic attacks and countermeasures, security models, assumptions and proofs.
Prerequisites: CS 303 [Min Grade: C] and (MA 125 [Min Grade: C] or MA 225 [Min Grade: C])

CS 446. Digital Currency. 3 Hours.

Fundamental principles of digital cash systems including Bitcoin, Ripple and other notable cryptocurrencies. Topics to be covered include how a cryptocurrency works, blockchain and other decentralized consensus protocols, proof of work, proof of stake, security and privacy of cryptocurrencies, cryptographic techniques for digital currency, and applications of blockchain in peer-to-peer trust establishment, smart contracts, digital asset management, financial exchanges and distributed autonomous organization.
Prerequisites: CS 303 [Min Grade: C] and (MA 125 [Min Grade: C] or MA 225 [Min Grade: C])

CS 447. Biomedical Modeling. 3 Hours.

Modeling and analysis of biomedical datasets. Aspects of image processing and shape modeling related to biomedical datasets, morphometry, alignment, surgical planning, case studies.
Prerequisites: CS 303 [Min Grade: C] and (MA 125 [Min Grade: C] or MA 225 [Min Grade: C])

CS 452. Advanced Algorithms and Applications. 3 Hours.

This courses introduce students to the design and analysis of fundamental algorithms that underpin many fields of importance ranging from data science, business intelligence, finance and cyber security to bioinformatics. Algorithms to be covered include dynamic programming, greedy technique, linear programming, network flow, sequence matching, search and alignment, randomized algorithms, page ranking, data compression, and quantum algorithms. Both time and space complexity of the algorithms are analyzed.
Prerequisites: CS 303 [Min Grade: C] and (MA 125 [Min Grade: C] or MA 225 [Min Grade: C])

CS 454. Malware Analysis. 3 Hours.

Hands-on course teaching static, dynamic and contextual analysis of malware. Malware analysis, and investigation is taught through interaction with both "classroom" and "wild" malware samples. Defensive and counter-measure techniques for both corporate and law enforcement environments are explored.
Prerequisites: CS 303 [Min Grade: C] and CS 330 [Min Grade: C] and (MA 125 [Min Grade: C] or MA 225 [Min Grade: C])

CS 454L. Malware Analysis Lab. 0 Hours.

Laboratory to accompany CS 454.

CS 456. Web Security. 3 Hours.

The web uses advanced applications that run on a large variety of browsers that may be built using programming languages such as JavaScript, AJAX, Google Web Toolkit and Apache Struts, to name a few. This course studies how core web technologies work, the common security vulnerabilities associated with them, and how to build secure web applications that are free from these vulnerabilities.
Prerequisites: CS 303 [Min Grade: C] and (MA 125 [Min Grade: C] or MA 225 [Min Grade: C])

CS 457. Penetration Testing and Vulnerability Assessment. 3 Hours.

This course focuses on penetration testing and vulnerability analysis. It introduces methodologies, techniques and tools to analyze and identify vulnerabilities in stand-alone and networked applications. It also covers methodologies for legal and standards compliance.
Prerequisites: CS 303 [Min Grade: C] and (MA 125 [Min Grade: C] or MA 457 [Min Grade: C])

CS 460. Artificial Intelligence. 3 Hours.

This course will provide an introduction to fundamental concepts in the field of artificial intelligence. Topics typically covered include agents, search, logic and knowledge representation, probabilistic models, machine learning, natural language processing and perception.
Prerequisites: CS 303 [Min Grade: C] and CS 350 [Min Grade: C]

CS 462. Natural Language Processing. 3 Hours.

This course provides a broad introduction to Natural Language Processing (Computational Linguistics). Topics typically covered in this course include part-of-speech tagging, syntactic parsing, semantic analysis, speech recognition, machine translation, sequence labeling algorithms, n-gram language models, statistical parsing, grammar formalisms and treebanks.
Prerequisites: (CS 303 [Min Grade: C] and CS 350 [Min Grade: C] and CS 355 [Min Grade: C]) or CS 460 [Min Grade: C]

CS 463. Data Mining. 3 Hours.

Techniques used in data mining (such as frequent sets and association rules, decision trees, Bayesian networks, classification, clustering), algorithms underlying these techniques, and applications.

CS 467. Machine Learning. 3 Hours.

Introduction to machine learning, the design of algorithms that can make predictions about the future based on past experience. Emphasizes practical considerations for developing efficient and accurate machine learning models, and theoretical underpinnings of different learning algorithms.
Prerequisites: (CS 303 [Min Grade: C] and CS 355 [Min Grade: C] and MA 125 [Min Grade: C]) or CS 460 [Min Grade: C] or (CS 303 [Min Grade: C] and CS 355 [Min Grade: C] and MA 225 [Min Grade: C])

CS 469. Introduction to the Internet of Things. 3 Hours.

Definition of the Internet of Things (IoT), history, IoT components, device specifications and examples, architectures, protocols, applications, security and privacy issues, programming and development environments for IoT, interoperability, interfacing IoT devices via web and mobile applications.
Prerequisites: CS 303 [Min Grade: C] and (MA 125 [Min Grade: C] or MA 225 [Min Grade: C])

CS 470. Computer Graphics and Data Visualization. 3 Hours.

Computer graphics and its application to the visualization of data for data science. Computer graphics: raster images, coordinate frames, matrix transforms, perspective and orthographic viewing, color, shading, visibility, quaternions and animation, triangle meshes, smooth curves and surfaces, texture mapping, graphics programming. Data visualization: Tufte's design rules, using colour to visualize, histograms, graph visualization, silhouettes and nonphotorealistic rendering, medical illustration, contouring, principal component analysis (PCA).
Prerequisites: CS 303 [Min Grade: C] and (MA 125 [Min Grade: C] or MA 225 [Min Grade: C])

CS 473. Computer Vision. 3 Hours.

Image smoothing and filtering, feature detection, segmentation, calibration and alignment, object recognition, morphology, projective geometry, scale space.
Prerequisites: CS 303 [Min Grade: C] and (MA 125 [Min Grade: C] or MA 225 [Min Grade: C])

CS 474. 3D Printing. 3 Hours.

3D Printing : design, materials, and aesthetics. Students will do projects which result in unique artifacts created by 3D printing. Multi-disciplinary teams are encouraged. Societal and legal implications.
Prerequisites: CS 303 [Min Grade: C] and (MA 125 [Min Grade: C] or MA 225 [Min Grade: C])

CS 475. Visualization. 3 Hours.

Advanced computer graphics techniques aimed at scientific visualization applications.
Prerequisites: CS 303 [Min Grade: C] and (MA 125 [Min Grade: C] or MA 225 [Min Grade: C])

CS 476. Foundations of Game Development. 3 Hours.

An exploration of the Unreal game development engine and game development using Unreal and C++. This course assumes no prior C++ programming experience, game development experience or experience with the Unreal engine. The student will gain foundational knowledge of the Unreal Engine, C++, game design and development.
Prerequisites: CS 303 [Min Grade: C] and (MA 125 [Min Grade: C] or MA 226 [Min Grade: C])

CS 482. Simulation Methodology. 3 Hours.

Foundations for computer modeling and simulation, with accent on discrete systems: random number and process generation; statistical bases with probability and frequency distribution orientation; Monte Carlo experiments and general purpose modeling.
Prerequisites: CS 303 [Min Grade: C] and (MA 125 [Min Grade: C] or MA 225 [Min Grade: C])

CS 483. Open Source Security Systems. 3 Hours.

An introduction to the design, implementation, evaluation and maintenance of secure software systems and applications using open source technologies, with an emphasis on hands-on experience. Topics include: open source ecosystems, open source security methodologies and models, notable open source software systems and projects, quality and security assurance through open source, open source supply chain security, major open source cryptographic packages; designing, implementing and maintaining security systems using open source technologies; assessment and regulatory compliance using open source tools, and open source hardware.
Prerequisites: CS 303 [Min Grade: C] and (MA 125 [Min Grade: C] or MA 225 [Min Grade: C])

CS 484. Robot Motion. 3 Hours.

Path planning algorithms. Configuration space, potential functions, roadmaps, cell decomposition, probabilistic motion planning, compliant motion.
Prerequisites: CS 303 [Min Grade: C] and (MA 125 [Min Grade: C] or MA 225 [Min Grade: C])

CS 485. Foundations of Data Science. 3 Hours.

This introductory course in data science teaches fundamental concepts and techniques in statistical inference and big data analytics. Topics include high-dimensional space, singular value decomposition, random graphs, random walks and Markov chains, data streaming and sketching, and basics of data mining and machine learning.
Prerequisites: CS 303 [Min Grade: C] and (MA 125 [Min Grade: C] or MA 225 [Min Grade: C])

CS 486. Software-Defined Networking. 3 Hours.

Software defined networking (SDN) allows a logically centralized software component to manage and control the behavior of an entire network. Topics to be covered include abstractions and layered architecture of SDN, data, control and management planes, network virtualization, programming SDN, network functions (e.g. routing, load balancing and security), comparison of OpenFlow and proprietary SDN technologies, and network optimization with SDN.
Prerequisites: CS 303 [Min Grade: C] and (MA 125 [Min Grade: C] or MA 225 [Min Grade: C])

CS 487. Complex Networks. 3 Hours.

Introduction to complex network theory and real-world applications in biology, physics, sociology, national security and cyber enabled technology systems such as social networks. Essential network models including small world networks, scale free networks, spatial and hierarchical networks together with methods to generate them with a computer will be discussed. In addition, various techniques for the analysis of networks including network modeling and evolution, community structure, dynamic network analysis, and network visualization will be explored.
Prerequisites: CS 303 [Min Grade: C] and (MA 125 [Min Grade: C] or MA 225 [Min Grade: C])

CS 489. Cyber Risk Management. 3 Hours.

This course develops knowledge and skills in risk based information security management geared toward preventive management and assurance of security of information and information systems in technology-enabled environments. It focuses on risk assessments, risk mitigation strategies, risk profiling and sensitivity, quantitative and qualitative models of calculating risk exposures, security controls and services, threat and vulnerability management, financing the cost of security risks, and return on investment for information security initiatives. The course presents several risk assessment models with an ultimate goal of identifying and realizing the unique and acceptable level of information risk for an organization.
Prerequisites: CS 303 [Min Grade: C] and (MA 125 [Min Grade: C] or MA 225 [Min Grade: C])

CS 491. Special Topics. 3 Hours.

Special Topics in Computer Science.
Prerequisites: CS 303 [Min Grade: C] and (MA 125 [Min Grade: C] or MA 225 [Min Grade: C])

CS 492. Special Topics. 3 Hours.

Special Topics in Computer Science.
Prerequisites: CS 303 [Min Grade: C] and (MA 125 [Min Grade: C] or MA 225 [Min Grade: C])

CS 496. Research Seminar. 1 Hour.

Participation in research seminar directed by a faculty member.

CS 497. Competitive Programming Techniques. 1 Hour.

This course will help students become more competitive in a programming competition such as the ACM programming contest by exploring numerous problem solving techniques and algorithms not covered in the traditional curriculum.

CS 498. Research Methods in Computer Science. 3 Hours.

This course is designed to provide future computer science teachers with the tools that computer science uses to develop new knowledge. Students will design, implement, and document independent research inquiry. Students will learn how scientists communicate through peer-reviewed publications and evaluate conflicting scientific claims. Work is closely coordinated with the work of students from other content disciplines so that students see the similarity and differences of research methods in their own field as compared with those of other science disciplines.
Prerequisites: EHS 126 [Min Grade: D]

CS 499. Senior BS Capstone. 3 Hours.

This capstone course consolidates key concepts in the undergraduate BS curriculum and prepares students for their professional careers. Teamwork and writing are key themes of the course. Students discuss and write about topics in ethics, professional practice, entrepreneurship, intellectual property, licensing (e.g., GPL, MIT), privacy, continuing professional development, professional networking tools, compliance, tolerance, inclusion, appreciation of diversity, and contemporary issues. In a software engineering project, students work in a team to put to practice principles and techniques that they have acquired throughout the undergraduate curriculum. Students take the Major Field Test in Computer Science as a requirement for completing this course. Students should be CIS BS majors in their last year of undergraduate study. Lecture and laboratory.
Prerequisites: CMST 101 [Min Grade: C] and PHL 115 [Min Grade: C] and CS 303 [Min Grade: C] and (MA 125 [Min Grade: C] or MA 225 [Min Grade: C])

CS 499L. Senior Capstone Laboratory. 0 Hours.

Laboratory to accompany CS 499.

CSA - Computer Science Courses

CSA 499. Senior BA Capstone. 3 Hours.

This capstone course consolidates key concepts in the undergraduate BA curriculum and prepares students for their professional careers. Teamwork and writing are key themes of the course. Students discuss and write about topics in ethics, professional practice, entrepreneurship, intellectual property, licensing (e.g., GPL, MIT), privacy, continuing professional development, professional networking tools, compliance, tolerance, inclusion, appreciation of diversity, and contemporary issues. In an application-oriented project, students put to practice principles and techniques that they have acquired throughout the undergraduate computer science curriculum in the context of their minor discipline. Students take the Major Field Test in Computer Science as a requirement for completing this course. Students should be CIS BA majors in their last year of undergraduate study. Lecture and laboratory.
Prerequisites: CS 303 [Min Grade: C] and (MA 125 [Min Grade: C] or MA 225 [Min Grade: C])

CSA 499L. Senior BA Capstone Laboratory. 0 Hours.

Laboratory to accompany CSA 499.

Faculty

Bangalore, Purushotham, Professor of Computer and Information Sciences and Assistant Director of CIA-JFR, 2003, B.E. (Bangalore-India), M.S., Ph.D. (Mississippi State)
Barnard, Anthony C. L., Professor Emeritus of Computer and Information Sciences, 1968, B.S. (Birmingham, England), M.B.A. (UAB), Ph.D., D.Sc. (Birmingham, England)
Bethard, Steven J., Assistant Professor of Computer and Information Sciences, 2013, B.A., B.S. (Arizona), Ph.D. (Colorado)
Hasan, Ragib, Assistant Professor of Computer and Information Sciences, 2011, B.S. (Bangladesh), M.S., Ph.D. (Illinois Urbana-Champaign)
Hyatt, Robert M., Associate Professor of Computer and Information Sciences, 1988, B.S., M.S. (Southern Mississippi), Ph.D. (UAB)
Johnstone, John K., Associate Professor and Undergraduate Program Director of Computer and Information Sciences; Associate Professor of Ophthalmology, 1994, B.S. (Saskatchewan-Canada), M.S., Ph.D. (Cornell)
Jones, Warren T., Professor Emeritus of Computer and Information Sciences, 1979, B.S.E.E. (Georgia Institute of Technology), M.S. (Georgia State), M.S., Ph.D. (Georgia Institute of Technology), P.E. (Kentucky)
Pirkelbauer, Peter, Assistant Professor of Computer and Information Sciences, 2012, Dipl.-Ing. (Linz, Austria), MBA, Ph.D. (Texas A&M University), Compilers, Runtime Systems, High Performance Computing, Non-Blocking Software Design
Reilly, Kevin D., Professor Emeritus of Computer and Information Sciences, 1970, B.S. (Creghton), M.S. (Nebraska), Ph.D. (University of Chicago)
Saxena, Nitesh, Associate Professor of Computer and Information Sciences; MS CFSM Program Co-Director, 2011, B.S. (Kharagpur), M.S., Ph.D. (University of California-Irvine)
Sloan, Kenneth, Associate Professor , 1990, Sc.B. (Brown), M.S. (Stevens Institute of Technology), Ph.D. (Pennsylvania)
Sprague, Alan P., Professor of Computer and Information Sciences; Associate Professor of Medicine, 1988, B.A. (Oberlin), M.A.T. (Northwestern), M.S., Ph.D. (Ohio State)
Zhang, Chengcui, Professor and Graduate Program Director of Computer and Information Sciences, 2004, B.S., M.S. (Zhejiang University, China.), Ph.D. (Florida International)
Zheng, Yuliang, Professor and Chair, 2015, Ph.D. (Yokohama - Japan)