CSC 1104 | Foundations of Computer Science I | A study of programming, concepts and techniques. Topics included are: binary representation of numbers and characters, data types of constants and variables, arithmetic expressions and the hierarchy of arithmetic operations, assignment statements, logical expressions, branching, loops, arrays, sub-programs, input/output, linear and binary searches, and basic sorts. Programming style is introduced through pseudocode. Meets for three-hours lecture and two-hours laboratory each week. Prerequisite: MTH 0013 � Intermediate Algebra, with a grade of C or better; or required math test score. An ACT math score of 21 or above is recommended. |

CSC 1114 | Foundations of Computer Science II | A continuation of Foundations of Computer Science I. Good programming style is stressed. Topics included are: documentation of programs, step-wise refinement, structuring programs, top-down design of programs, internal sorts, and linear data structures. Meets for three-hours lecture and two-hours laboratory each week. Prerequisite: CSC 1104 � Foundations of Computer Science I. |

CSC 2003 (CPSI1003) | Introduction to Computers | A computer literacy course introducing the novice to the use of the computer. Topics included are: problems having practical computer solutions, available software, computer terminology. Examples from business, education, political science and the social sciences are included. This does not count toward a computer science major or minor. |

CSC 2163 | Computer Applications | A theoretical and practical study of current computer application software. Applications covered will vary by semester. May be repeated with change in content. This does not count toward a computer science major or minor. |

CSC 2173 | Assembler Language | A study of the basic concepts of computer systems and an introduction to an assembler language. Topics included are: computer structure and machine language, assembler language, addressing techniques, macros, and I/O routines. Prerequisite: CSC 1104 � Foundations of Computer Science I. |

CSC 2203 | Data Structures | The objective of this course is to apply analysis and design techniques to non-numeric algorithms that act on data structures. Topics will include linked lists, queues, stacks, trees, AVL trees, and string handling algorithms. Prerequisite: CSC 1114 � Foundations of Computer Science II. |

CSC 3133 | Introduction to Database Theory | An introduction to database management systems. Topics covered include: structures, indexing, E-R model, relational model, relational algebra and calculus, query languages, SQL, constraints and normalizations, transaction management, integrity and security issues. Prerequisite: CSC 2203 � Data Structures. |

CSC 3144 | Digital Electronics | Topics covered include binary and hex arithmetic, boolean algebra, logic gates, transistors and diodes, logic families, flip-flops, counters, power supplies, comparators, A-D, D-A converters, digital instruments. Meets for three lecture periods and a two-hour laboratory period each week. Prerequisite: PHY 2234 � University Physics I and PHY 2244 � University Physics II. |

CSC 3153 | Introduction to Compiler Theory | An introduction to the formal study of languages and compiler construction: Topics included are: programming language basics, finite automata and lexical analysis, grammars, top-down and bottom-up parsers, syntax-directed translation, code generation, and code optimization. Prerequisite: CSC 2173 � Assembler Language and CSC 3433 � Computational Complexity. |

CSC 3193 | Operating Systems | A study of the principles of operating systems and the interrelationships between operating systems and computer architecture. Topics included are: system structure, memory management, process management, and recovery procedures. Prerequisite: CSC 3443 � Computer Organization. |

CSC 3223 | Algorithm Analysis | An introduction to the analysis and design of algorithms, and to techniques for measuring their complexity. Prerequisites: CSC 2203 � Data Structures and MTH 1295 � Calculus I or consent of Department. |

CSC 3433 | Computational Complexity | A study of basic theoretical computer science concepts. Topics will include formal language theory and results, non-determinism, grammars, Turing machines, halting problem, and undecidability among others. Prerequisite: CSC 3223 � Algorithm Analysis. |

CSC 3443 | Computer Organization | An introductory course in computer organization and architecture. Topics included are: machine level representation of data, memory system organization and architecture, I/O fundamentals, buses, pipelining, multiprocessing, and system performance enhancements. Prerequisite: CSC 2173 � Assembler Language. |

CSC 3453 | Programming Languages | Comparison of the organization and structure of procedural, object-oriented, functional, declarative, and scripting languages. Additional topics will include language translation, abstraction mechanisms, language design and semantics. Prerequisite: CSC 2203 � Data Structures. |

CSC 3463 | Software Engineering | A study of the methods used in the design, development, implementation, testing and maintenance of software systems. Students will utilize the team approach in the development and management of software projects and will make use of modern tools to achieve these tasks. Prerequisite: CSC 3223 � Algorithm Analysis. |

CSC 3472 | Technology and Society | A course that allows the student to explore and develop an understanding of the social and professional context in which computing is done. Topics included are: computing history, professional responsibilities, risks and liabilities, intellectual property, privacy, computer crime, and economic issues. Prerequisite: CSC 3463 � Software Engineering. |

CSC 4184 | Interfacing and Machine Control | A study of hardware interfacing components and techniques. Topics covered include: embedded controllers, communication controllers, PCBs, embedded logic, debugging strategies, interrupts, multitasking, and networking. Prerequisite: CSC 3443 � Computer Organization. |

CSC 4213 | Simulation Theory | A study of the fundamental principles involved in the construction of computer simulation models. Topics included are: random number generators, model construction, queuing models, and inventory models. Prerequisite: MTH 2323 � Statistical Methods or MTH 3163 � Probability & Statistics, and CSC 1114 � Foundations of Computer Science II or consent of department. |

CSC 4263 | Client/Server Programming | A study of the principles governing client/server programming. Topics included are: client/server model, concurrency, protocols and interfaces, issues in software design, connectionless vs. connection-oriented servers, iterative vs. concurrent servers, RPCs, and selected case studies. Prerequisite: CSC 2203 � Data Structures. |

CSC 4273 | Introduction to Data Communication | A study of the fundamental principles involved in data communication and a general overview of various data communication systems. Topics included are baud rates, modem controls, protocols, error detection and correction, communication line characteristics, synchronous and asynchronous communication, application interface software, network systems, analysis of communication systems. Prerequisite: CSC 3443 � Computer Organization. |

CSC 4283 | Introduction to Networking | A study of Local Area Network Standards and an implementation of a LAN. Topics covered are: LAN topologies, transmission media, access methods, OSI layer implementations, NOS installation, management, print servers, network management software. Prerequisites: CSC 3443 � Computer Organization or consent of Department. |

CSC 4293 | Numerical Analysis | An introduction to numerical methods of problem solving to include error analysis, interpolation procedures, differentiation, integration, solutions of non-linear and differential equations, and approximation of functions. Prerequisites: MTH 2045 � Calculus II and CSC 1104 � Foundations of Computer Science I. |

CSC 4331-3 | Independent Study | Independent study in an area of computer science selected by the student and faculty advisor. Credit will vary from one to three hours. May be repeated. Prerequisite: consent of Department. |

CSC 4421-3 | Special Topics in Computer Science | Variable content course covering current and advanced topics in computer science. May be repeated with change in content. Prerequisite: consent of Department. |

CSC 4483 | Computer Science Capstone | A project course requiring the computer science student to develop and implement a capstone project requiring the integration of software, hardware components, and human factors. Software engineering methodologies along with good written and verbal communications skills will be required. Program assessment tools will be administered. Prerequisites: CSC 3463 � Software Engineering, CSC 3113 � Database Theory, and CSC 3193 � Operating Systems. |

CSC 4493 | Artificial Intelligence | An introduction to machine intelligence. Topics covered include: AI languages, problem solving strategies, searching, knowledge representations, natural language processing, machine learning, expert systems, neural networks, and robotics. Prerequisite: CSC 3223 � Algorithm Analysis. |

CSC 4503 | Computer Graphics | A course that provides an introduction to basic 3D computer graphics programming techniques. Topics included are: OpenGL library, user interface design, projection and transformations, basic animation, etc. Prerequisite: CSC 3223 � Algorithm Analysis. |

CSC 4513 | Visual Programming | An introduction to visual programming. Topics covered include: interface design, object oriented concepts, Internet programming, data reporting, error handling, help file creation, linkages, etc. Prerequisite: CSC 3223 � Algorithm Analysis. |