Computer Science

Admissions | Program Requirements | Graduate Courses

EIT Building, Room 579, (501) 569-8130, Website

Master of Science in Computer Science

The Master of Science in Computer Science program at UALR reflects current trends in the computer science discipline and provides students with a solid theoretical and practical foundation for careers in computer science and/or advanced graduate studies.

The curriculum consists of two parts: 1) core and 2) specialization course work. Core curriculum refers to required courses that provide students with fundamental knowledge and skills. Building on the core foundation, the specialization course work allows students the opportunity to select electives to acquire more in-depth knowledge and skills in the students’ specific areas of interest.

To satisfy the requirements for the master’s degree, in addition to the course work, students must complete one of the following program options: thesis, project, or comprehensive examination.

The program is accessible to day and evening students and lends itself to full- and part-time study.

Additional information is available at Computer Science website.

Admission Requirements

  • Baccalaureate degree in computer science, engineering, mathematics, or a related discipline from an accredited institution
  • Cumulative Grade Point Average (GPA) of at least 3.0 (4.0 scale). However, in some cases, if the GRE score is above the minimum desired score, a GPA lower than 3.0 can be considered for full/conditional admission.
  • Where applicable, Test of English as a Foreign Language (TOEFL) score of 80 or above or equivalent IELTS score is recommended.
  • On the Graduate Record Examination (GRE) general test, the desired scores are a quantitative reasoning score of 155 or above, a verbal reasoning score of 145 or above, and analytical writing score 3.0 or above.
  • Completion of deficiency course work, if conditional admission is granted.

For more information, visit the Computer Science website.

Deficiency Course Work

All students seeking admission to the program must have completed (with a grade of B or greater in each course) undergraduate course work equivalent to the following:

CPSC 2380 Data Structures and Algorithms
CPSC 2382 Introduction to Computer Systems and Assembly Language
CPSC 3375 Database Concepts I
or CPSC 4375 Software Engineering
CPSC 3380 Operating Systems Concepts
CPSC 3383 Programming Languages
CPSC 3482 Computer Organization I
MATH 1451 Calculus I
MATH 1452 Calculus II
MATH 2310 Discrete Mathematics

Students who have not completed such course work must compensate for deficiencies by taking CPSC 5399. Courses taken to compensate for deficiencies are not credited towards the degree. Exception: students with a single deficiency course remaining may register for that class and graduate classes as long as no prerequisites are violated.

Waiver of deficiency courses is at the discretion of the Computer Science Graduate Committee.

Program Requirements

Core Course Work

All students must take the following 5 courses (15 credit hours):

CPSC 7311 Software Engineering
CPSC 7321 Operating Systems
CPSC 7331 Computer Architecture
CPSC 7341 Telecommunications and Networking
CPSC 7385 Analysis of Algorithms

Specialization Course Work

Students must choose five specialization classes (three if the thesis option is selected) from the department’s graduate-level courses. Students are strongly encouraged to select courses with the guidance of their graduate advisors with the goal of in-depth exploration of a particular area of computer science. Students may take a maximum of two 5000-level courses as part of their specialization course work. Additionally, the total number of special topic/independent study classes cannot exceed two. Substitution of up to two graduate electives from other disciplines (in particular Applied Science, Systems Engineering, Information Science, and Mathematical Sciences) for specialization course work is at the discretion of the Computer Science Graduate Coordinator.

Transfer of credit hours earned elsewhere

Maximum of six (6) graduate credit hours can be transferred into the graduate degree plan.

Program Options

All students must complete one of the following options:

  • Comprehensive Graduate Exam: 30 credit hours of course work plus a written comprehensive examination covering the core curriculum. The examination is offered once per regular semester and can be taken only twice.
  • Graduate Project: 33 credit hours, consisting of 30 hours of course work plus three credit hours of CPSC 7398 Graduate Project.
  • Graduate Thesis: 30 credit hours, consisting of 24 hours of course work plus six credit hours of Thesis (CPSC 8100-8600).

Students choosing the project or thesis options must complete the core curriculum prior to enrolling in CPSC 7398 Graduate Project or CPSC 8100-8600 Thesis. Additionally, these students must form a Thesis/Project Committee must have at least two members, including the advisor, from the Computer Science Department and can have at most one member from other departments. Following the recommendation of the Thesis/Project Committee, the student must schedule an oral proposal presentation and a defense for the graduate project or thesis.

Performance Requirements

  • Students receiving a C grade will be warned that their academic performance is unacceptable and their status will be reviewed by the Computer Science Graduate Committee, which will suggest corrective action.
  • Upon receiving two Cs or either a D or an F, the student will be dismissed from the program.
  • Courses with grades of B or greater may not be repeated.
  • Core courses with grade of C do not satisfy the degree requirement and must be repeated. A minimum score of B is required for each of the core courses.
  • Deviation from the degree plan requires the approval of the Computer Science Graduate Committee.
  • Conditionally admitted students must earn a Grade Point Average (GPA) above 3.5 in the first 9 hours and may not receive a grade of incomplete (I).

Academic Advising

Each semester, academic advising is required for every student prior to course registration. A copy of the approved courses must be filed with the Graduate School.

Graduate Assistantships

A limited number of graduate assistantships are available. Contact the Computer Science graduate coordinator for information.

Graduation Requirements

  • Cumulative GPA of at least 3.0 in an approved program of study and satisfying all requirements specified in Performance Requirements.
  • Successful completion of one of the program options specified in Program Options.

Courses in Computer Science

CPSC 5199-5499 Special Topics
Prerequisites: graduate standing, consent of instructor. Various topics in applied computer science, selected from the areas of intelligent systems and computer systems design. On demand.

CPSC 5360 Computer Security
Prerequisites: CPSC 3370 or equivalent of the consent of the instructor. Increasing reliance on our computer based infrastructure elements along with the information driven nature of today’s business require a solid and in-depth understanding of security issues pertinent to these systems. The topics include threats, assumptions, assurance, confidentiality, integrity, availability, access control matrix and policies, security models, requirements imposed by policies, protection models, covert channels, formal methods for security, designing and evaluating systems, intrusion detection, auditing, and other contemporary issues. Three hour lecture per week. Three credit hours. Not open to students with credit for CPSC 4360.

CPSC 5366 Interactive Computer Graphics and Animation
Prerequisites: Graduate Standing. Knowledge of C, C++ or Java Programming. Approval from the instructor. This course introduces computer graphics and all details of the design of modern graphic architecture. The topics covered include two – and three – dimensional modeling and transformation, lighting and shading, animation techniques, and an introduction to OpenGL. Three hours lecture; three credit hours. Not open to students with CPSC 4366.

CPSC 5367 Mobile Apps Development
Prerequisite: CPSC 2380 or equivalent, with a grade of C or better. Mobile devices are becoming ubiquitous and developers are rushing to build applications for them. In this course, we will be learning how to develop mobile applications for popular mobile platforms. Students will learn skills for creating and deploying real-world mobile applications. Solid skills of programming and application development and good knowledge of software engineering are necessary for successful completion of this course. Students with credit for credit. CPSC 4367 cannot take CPSC 5367 for credit.

CPSC 5370 Theory of Computation

Prerequisites: CPSC 3383, MATH 2310. A study of the main areas of theoretical computer science and their hierarchical interconnections. Basic results relating to formal models of computation, with emphasis on grammars and languages, finite automata, Turing machines, and computational complexity. Three hours lecture per week. Three credit hours. Students with credit for 4370 may not take 5370.

CPSC 5372 Object-oriented Programming
Prerequisites: working knowledge of a procedural programming language and UNIX operating system, or consent of the instructor. Concepts of object-oriented analysis, design, and implementation. Object-oriented programming in C++, Smalltalk, Java, and/or another current object-oriented programming language.

CPSC 5373 Fundamentals of Software Engineering
Prerequisite: Graduate Standing. This is a foundational course that covers fundamentals of modern software engineering. Topics included are: requirements definition, analysis, and modeling including use cases and use case paths, domain names, state transition diagrams; techniques to increase robustness and avoid disastrous defects; object oriented architecture and design patterns and specification in UML; performance impact of design choices; analysis of designs regarding maintainability and testability; security engineering; practical system test and glass – box testing fundamentals; verification of test coverage via decision tables and state transition tables. Three hours lecture per week. Three credit hours. Not open to students with credit for CPSC 4373.

CPSC 5375 Fundamentals of Database Management
Prerequisites: CPSC 3375 or equivalent. Advanced topics related to the design and efficient implementation of modern database management systems. Concurrency and transaction management, database security, query processing, query optimization, physical database storage, and indexing. Three hours lecture per week. Three credit hours. Students with credit for 4375 cannot take CPSC 5375 for additional credit.

CPSC 5376 Applied Cryptography
Prerequisites: CPSC 2380, MATH 2310, and STAT 3352 or equivalents. A survey and study of the major cryptographic techniques, algorithms, and implementations, with emphasis on applications to communications and network security. Intended as a practical introduction to the current state-of-the-art of cryptographic usage. Three hours lecture. Three credit hours.

CPSC 5377 Advanced Game Programming
Prerequisite: CPSC 2380, junior/senior or entry graduate level standing. This course is the third semester of programming and problem solving using the C++ language to develop video games. The course will cover implementation of numerous advanced programming techniques: resource management, graphical interfaces, physics, collision detection and resolution, non-player characters, and media integration. The examples and programming assignments make extensive use of multiple external C++ libraries. The class will also cover select theoretical aspects of game programming and development. Students with credit for 4377 may not take 5377 for additional credit.

CPSC 5381 Computer Architecture and Design
Prerequisite: Graduate Standing. This course addresses the architecture and design of modern microprocessor computers. In it adheres to the principle of “no mysteries” and reveals all the details of the design of modern pipeline microprocessor system. The topics covered include formal description of computer architecture and design, instruction set architectures, processor design of modern computers, pipeline and instruction level parallelism, memory system design, and input and output systems. Not open to students with credit for CPSC 4381.

CPSC 5382 Compiler Construction and Theory
Prerequisites: Graduate Standing. The fundamental principles of compilers such as finite state machines, context free grammar, are studied. The compilation techniques covered include compile and run- time symbol tables, lexical analysis syntax analysis, semantic analysis, object code generation, error diagnostic and optimization. Three hours lecture. Three credit hours. Not open to students with credit for CPSC 4382.

CPSC 5383 Artificial Intelligence

Prerequisites: CPSC 2380; MATH 1452 and MATH 2310, junior/senior undergraduate or entry graduate level standings. Introduction to machine intelligence. Emphasis upon different paradigms for problem solving such as various state-space search strategies and other approaches. Exposure to one or more key areas such as robotics, logic programming, machine learning, expert systems, planning, neural networks, natural language processing, reasoning, under uncertainty, etc. Three hours lecture per week. Three credit hours. Students with credit for 4383 cannot take 5383 for credit.

CPSC 5384 Computer Networks
Prerequisites: Graduate Standing. This course is an introduction to the design and analysis of computer networks. The course covers a breadth of topics including computer communications architecture and protocols, local and wide area networks, IP networks, bridging and routing, Ethernet, wireless LANs, sockets programming, and distributed applications. Three hours lecture; three credit hours. Not open to students with credit for CPSC 4382.

CPSC 5387 Distributed Computing
Prerequisites: CPSC 3383. Network-based client/server computing. Topics include TCP/IP, object-oriented technology, distributed objects and their interfaces, JDBC, remote method invocations, COBRA, and web-based software system architecture. Graduate students are required to research a topic and write an in-depth paper. Three credit hours. Students with credit for 4387 cannot take 5387 for credit.

CPSC 5388 Smart Software Systems
Prerequisites: Graduate Standing. Ability to perform independently and as a team member is absolutely essential. A working knowledge of C, C++, Java and a course in digital logic/ assembly language programming is very much desired. This class will involve extensive independent work with your group and the instructor to plan and implement an embedded software systems project. Three hours lecture; three credit hours. Not open to students with credit for CPSC 4388.

CPSC 7101 Research Methodology
Prerequisites: Graduate Standing. A one-credit course in a set of three, introducing students to the research methodology of doctoral level research in the Integrated Computing field. Research examples will be drawn from work that exemplifies the interconnecting research opportunities across the Integrated Computing discipline.

CPSC 7102 Research Tools
Prerequisites: Graduate Standing. A one-credit course in a set of three, introducing students to the research methodology of doctoral level research in the Integrated Computing field. Research examples will be drawn from work that exemplifies the interconnecting research opportunities across the Integrated Computing discipline.

CPSC 7103 Research Applications
Prerequisites: SYEN / IFSC / CPSC 7101 and 7102. A one-credit course in a set of three, introducing students to the research methodology of doctoral level research in the Integrated Computing field. Research examples will be drawn from work that exemplifies the interconnecting research opportunities across the Integrated Computing discipline. Students may with permission of the other Graduate Coordinator concurrently enroll in this course with either SYEN / IFSC /CPSC 7101 or 7102.

CPSC 7190 Graduate Seminar
Prerequisite: Graduate Standing. A weekly expository lecture series by the faculty and invited speakers on current research areas.

CPSC 7301 Essentials of Computer Software
Prerequisites: Graduate Standing with an engineering or science degree and at least one programming language of C, C++ or Java. This course introduces students to important concepts and techniques in developing software and internet based applications. Topics include: programming language paradigms, data structures, algorithms and programming environments: compiled versus interpreted environments, web based languages and scripting techniques, data access techniques and support for secure protocols, methods for querying and updating structured web documents and semi structured data. Language issues in the development and management of commercial projects, etc. This course and CPSC 7302 will prepare the science or engineering graduates for the computer science master program and the credit of this course is not counted towards the requirement of the master program. Three hours lecture and three credit hours.

CPSC 7302 Essentials of Computer Systems
Prerequisites: Graduate Standing with an engineering or science degree and at least one programming language of C, C++ or Java. This course takes an integrated approach to cover the major components of the complete computer system: digital logic, computer organization and architecture, programming languages and compilers, and operating systems and computer networks. This course and CPSC 7301 will prepare the science or engineering graduates for the computer science master’s program and the credit of this course is not counted towards the requirement of the master’s program. Three hours lecture and three credit hours.

CPSC 7311 Software Engineering
Prerequisites: Graduate Standing and a working knowledge of C or C++. An overview of the software development paradigm to include the software life cycle, prototyping and object-orientation; reliability, quality assurance, formal methods, and CASE tools.

CPSC 7312 Parallel Processing
Prerequisites: Graduate Standing; CPSC 2380 and CPSC 3482. Concepts of parallel computing, parallel architectures and interconnection networks; parallel programming and applications; basic paradigms and primitives, programming using PVM and MPI; efficient mapping of programs, automatic parallelization of serial code.

CPSC 7313 Concurrent Software System Architecture
Prerequisite: CPSC 5373 or permission of the instructor based on an existing background in object orientation methodology. This course covers the internal issues of modern software engineering. Topics include requirements of interface definition, notation, and analysis of systems of programs; software systems architecture issues, synchronization while managing shared data stores, and ensuring the architecture supports performance goals; concurrent task structuring criteria; software architecture patterns for common categories of software systems; concurrency support including enforcing mutual exclusion, engineering for deadlock avoidance, and ensuring liveness; design for testability; architecture performance analysis, performance design patterns, and anti-patterns. Three hour lectures. Three credit hours.

CPSC 7314 Integrated Software System Engineering
Prerequisites: CPSC 4373/5373. This course covers the integration related issues of modern software engineering. Topics include but not limited to specification of use cases for a distributed application; design and development concerns such as fault tolerance, reliability, security, interoperability; how these concerns influence the placement of functionality in the distributed environment—subsystem structuring criteria; design that allows upgrades and modifications of installed distributed systems; representation of timing sequences; performance analysis of concurrent and distributed systems; design for testability; distributed architecture design patterns; other issues about testing distributed systems. Three hour lectures. Three credit hours.

CPSC 7321 Operating Systems
Prerequisites: CPSC 3380 and 3482; working knowledge of C, C++, or Java Programming Language, and UNIX. Advanced topics in operating systems; process synchronization, deadlock, concurrency; fault tolerance, protection and security; distributed operating systems, multiprocessor operating systems.

CPSC 7322 Distributed Systems
Prerequisites: CPSC 3380 and 3482; working knowledge of C, C++, or Java Programming Language, and UNIX. Foundations of distributed operating systems; design and implementation of distributed systems; communication methods for open systems; kernel facilities; file management, naming and dock synchronization; transactional services for shared data.

CPSC 7325 Software Security Assessment
Prerequisite: CPSC 5360 or Consent of Instructor. Today’s networked and complex software not only increases number of potential vulnerabilities but also increases risk associated with vulnerabilities. The industry-specific regulations further necessitate building software with the minimum number of vulnerabilities. This course delivers the know-how of dealing with software vulnerabilities. The topics covered include Software Vulnerability Fundamentals, Auditing and Black Box Testing, Design, Implementation, and Operational Vulnerabilities, Design and Operational Review, Attack Surface; Insecure Defaults; Access Control; Secure Channels, Application Review Process, Code-Auditing Strategies, Software Vulnerabilities, Assessing Memory Corruption, Synchronization and State, Vulnerabilities in Practice, Documentation of Findings.

CPSC 7326 Malware Analysis
Prerequisite: CPSC 4360/5360 or Consent of Instructor. Malware, despite the wide-spread use of anti-malware tools, still persists to exist in large-scale. Malware outbreaks can cost businesses large sums of money through business disruption, harming reputation, and recovery efforts. This class offers a thorough analysis of Malware including cutting edge techniques to detect and deal with it. Topics covered include History and Prevalence of Malicious Code, Types of Malicious Code, Infection Mechanisms and Targets, Virus Propagation Mechanisms, Defending against Viruses, Worms and Worm Components, Impediments to Worm Spread, Super Worms, Malicious Mobile Code, Backdoors, Polymorphic Malware, Rootkits, Process for Malware Analysis.

CPSC 7331 Computer Architecture
Prerequisite: CPSC 3482. A study of computer architecture fundamentals; the impact of technology on architecture cost and performance; Instruction Set Architecture; design and analysis of the building blocks of computer systems, including data path, control, and memory hierarchy; recent architectural developments.

CPSC 7332 Advanced Computer Architecture
Prerequisite: CPSC 7331. An in-depth study of recent advances in computer architecture; speedup architectural techniques for high performance computer systems; caches and memory hierarchy; RISC and Superscalar computer architectures.

CPSC 7333 VLSI Design
Prerequisite: CPSC 3482. This course introduces the principles of CMOS VLSI technology and design; design methodologies from concept to implementation of VLSI chips; Mentor Graphics and Cadence software packages that support design, layout, and verification.

CPSC 7334 Digital Systems and Hardware Design Languages
Prerequisites: Computer Science 3482 and working knowledge of C. Architecture of a representative 32-bit processor, system building blocks, design conventions; HDL languages; modeling, simulation and verification of the representative processor.

CPSC 7341 Telecommunications and Networking
Prerequisite: Graduate Standing. Fundamentals of data communications; topologies and transmission media; protocol architecture; LAN, MAN, and WAN systems; network design issues.

CPSC 7342 Advanced Computer Networking
Prerequisite: CPSC 7341. Advanced concepts of computer networks; network hardware and software; preference models; data communications services; network standardization; design issues and their applications.

CPSC 7343 Sensor Networks
Prerequisites: CPSC 4384/5384. This course aims to develop fundamental understanding of sensor network systems. It covers architectures and communications protocols for sensor networks. Node and network architectures, naming and addressing, time synchronization, localization and positioning, topology control, and content-based networking are all covered. At the completion of the course, students will understand how sensor networks work as intelligent and coordinated systems.

CPSC 7344 Cloud Computing
Prerequisites: consent of instructor and approval by the graduate coordinator of the computer science department. The course aims to develop fundamental understanding of cloud computing systems. It covers the basic concept and framework of cloud computing, virtualization techniques, programming models such as MapReduce, could networking, security and privacy in cloud computing, cloud economics and practical implementation of cloud.

CPSC 7351 Database Design
Prerequisite: CPSC 2380 and 3375, Mathematics 2310. Design process, objectives, techniques, syntactic and semantic analysis design; entity relationships model, binary and n-ary relationships, minimality of relations, recursive relationships, role-modeling structures, aggregate objects, conversion methods, implementation models, evaluating design, choosing design methodologies.

CPSC 7352 Advanced Database Issues
Prerequisite: CPSC 7351. Advanced issues in distributed databases, transaction systems, database machines, database mining, expert database systems, object-oriented databases, and extended data models.

CPSC 7361 Computer Graphics
Prerequisites: MATH 1305; working knowledge of C programming. Introduction to computer graphics and graphic systems; output primitives and attributes; two-dimensional graphics: geometric transformations, viewing; three-dimensional graphics: object representation, geometric and modeling transformations and viewing; illumination models and animation; user interface and interactive input.

CPSC 7362 Advanced Computer Graphics
Prerequisite: CPSC 7361. Advanced concepts in two-dimensional graphics and three-dimensional graphics; object representations, geometric and modeling transformations, viewing, NURBS curves and surfaces; texture mapping, visible-surface detection methods, advanced illumination and shading models, color models and color applications; advanced animations.

CPSC 7373 Artificial Intelligence
Prerequisites: CPSC 2380; MATH 1305 or MATH 1312. Undergraduate course work in artificial intelligence would be beneficial but is not required. Study of the major areas of artificial intelligence, including general problem solving, search strategies, heuristics, knowledge representation, machine learning, games, scene analysis, expert systems, robotics, natural language processing, and Al languages.

CPSC 7374 Image Processing
Prerequisites: MATH 1305 or MATH 1312 and a working knowledge of C programming. Study of digital image fundamentals; transformation enhancement, restoration, segmentation, compression, encoding, representation, and description of digital images.

CPSC 7375 Machine Learning
Prerequisites: CPSC 2380; MATH 1305 or MATH 1312. Prior course work in artificial intelligence would be beneficial but is not required. In-depth study of machine learning foundation, neural networks, learning paradigms, inductive learning, deductive learning, learning techniques, rough classifiers, fuzzy systems, genetic algorithms, lattices, pattern recognition, and applications.

CPSC 7382 Systems Analysis and Design
Prerequisite: Graduate standing. Analysis and design of computer information services to meet the needs of industries and businesses; intended as a real-world practicum via field study, and as a community outreach via the provision of expertise and training.

CPSC 7383 Modeling and Simulation
Prerequisites: CPSC 2380; MATH 1305 or MATH 1312; knowledge of statistics and probability. Performance analysis of models of various systems using analytical approaches, discrete and continuous simulation, and hybrid techniques.

CPSC 7385 Analysis of Algorithms
Prerequisites: CPSC 2380; MATH 2310. A study of categories of computer algorithms: greedy, divide-and-conquer, recursive, and probabilistic; performance analysis techniques: order relations, recurrence relations, generating functions, induction, simulation; storage efficiency; complexity theory.

CPSC 7386 Compiler Design
Prerequisites: CPSC 2380 and CPSC 3383; MATH 2310. Grammars, languages, and the anatomy of compilers: scanners, parsers, semantic analyzers, type systems, run-time environments, intermediate code generation, code generation, and code optimization.

CPSC 7398 Graduate Project
Prerequisites: Graduate Standing and consent of the student’s graduate advisor. Students, under faculty supervision, will conduct directed research on a particular problem or area of computer science in some depth, and will produce an appropriate project and report based on their investigations.

CPSC 7399 Selected Topics
Prerequisites: Graduate Standing, consent of instructor. Various topics in applied computer science, selected from the areas of intelligent systems and computer systems design. Offered on demand.

CPSC 7100 – 7400 Independent Study
Prerequisite: Graduate Standing, instructor permission. Provides an opportunity for doctoral students to learn material relevant to their research that is not offered in a regular course. Students must take this course with an instructor who will guide the study. A copy of work done in the course will be submitted at the end of the semester.

CPSC 8100-8600 Thesis
Prerequisite: Consent of thesis advisor. Scholarly investigation of a selected problem in computer science culminating in a written, orally defended thesis. Maximum of six hours may be applied to M.S. Variable credit of one to six hours.

CPSC 9100-9900 Dissertation
Prerequisite: doctoral candidate status or consent of the program coordinator. This course deals with both the theoretical and practical aspects of designing dissertation research and successfully defending the design in a proposal hearing. The purpose of the course is to assist students through the proposal and dissertation writing processes. Credits range from 1 to 9 hours.