Revised Course Catalog

COSC 3331: Discrete Structures & Combinatorial Analysis (3,0,3)

Together with COSC 2331 Mathematical Reasoning and Algorithmic Thinking, this course develops the quantitative skills necessary for continued success in computer science. Discrete Structures and Combinatorial Analysis is concerned with the application of objects with discrete characteristics to computer science as a discipline in order that commonly used structures may be described, characterized and analyzed. It focuses on the study of objects that have discrete as opposed to continuous values including sets, functions, sequences, counting techniques and combinatorics, relations. Prerequisite: GEIT 2331.

COSC 3351: Algorithms (3,0,3)

This course is the study of the design and performance analysis of algorithms. Time and space complexity analysis of algorithms, design paradigms, and graph algorithms are discussed. Prerequisite: GEIT 2421: Data Structures, MATH 1313: Statistical Methods

COSC 3411: Systems Programming (3,1,4)

Systems programming is the study of the basic programming principles and skills for building systems software, including the introduction to UNIX, shell programming, and Perl programming. Prerequisite:GEIT 1412: Computer Science II, GEIT 1311: Computer Organization

COSC 4311: Parallel Computing (3,0,3)

This course provides a basic, in-depth look at techniques for the design and analysis of parallel algorithms and for programming them on commercially available parallel platforms. Principles of parallel algorithms design and different parallel programming models are both discussed. MPI, POSIX threads, and Open MP all are discussed. This course is for anyone wanting to gain proficiency in all aspects of parallel and distributed programming. Prerequisite: COSC 3351: Algorithms

COSC 4361: Operating Systems (3,0,3)

This course is the study of the principles, purposes, and organization of operating systems. The goal is to prepare students an understanding of the theory as well as practices of the design and implementation of operating systems software. Prerequisite:GEIT 1311: Computer Organization, COSC 3411: System Programming, GEIT 2421: Data Structures

COSC 4362: Artificial Intelligence (3,0,3)

The course presents an overview of artificial intelligence and its methods for solving problems. Basic algorithms for finding solutions to problems or adaptively improving responses to situations are discussed. Expert systems, genetic algorithms, and intelligent agents are among the areas that are explored. Prerequisite: GEIT 2421: Data Structures, COSC 3351: Algorithms.

COSC 4363: Theory of Computation (3,0,3)

This course is to give an introductory study of automata, formal languages, and computability, including set theory and countability, finite automata and regular languages, push-down automata and context-free languages, Turing machines, Church’s thesis, halting problem, and uncomputability. Prerequisite: COSC 3351: Algorithms, MATH 2331: Linear Algebra, MATH 2332: Differential Equations

COSC 4364: Compilers (3,0,3)

This course is the study of the theory and practice of constructing a compiler, including lexical analysis, parsing, semantic analysis, run-time organization, code generation, and optimization. During the course of the semester, the students complete a significant compiler project. Prerequisite: COSC 3351: Algorithms, COSC 4461: Programming Languages

COSC 4461: Programming Languages (3,1,4)

Programming languages is the study of basic concepts and constructs underlying the design of the modern programming languages. Various programming paradigms, including object-oriented, functional, logic, and concurrent programming, are discussed. Prerequisite: GEIT 1412: Computer Science II, COSC 3411: System Programming.