1300. Computers and Modern Society (3). Survey of computers, their uses, and their impact on society. Brief introduction to computer programming and the use of word processor, spreadsheet, and data base application software. Credit may not be applied toward a computer science major or minor. Fulfills core Technology and Applied Science requirement.
1303. Programming Language Proficiency in C/C++ (3). Prerequisites: MATH 1320 and computer literacy. The course will focus on basic programming skills in the C/C++ language. This course cannot be used for a CS major or minor.
1305. [COSC 1315, 1330; ENGR 2304] Introduction to Computer Science (3). An introduction to the field of computer science for majors. Computer ethics issues facing computer science professionals are addressed. Students will also learn concepts of computer programming with an emphasis on problem solving, critical thinking, logical reasoning, design and implementation techniques.
1382. Discrete Computational Structures (3). Prerequisite: CS 1411 or ECE 1304. Sets, functions, counting principles, basic probability, logic, proof methods, and graphs.
1411. [COSC 1320, 1336, 1415, 1436] Programming Principles I (4). Prerequisite: Department approval. Procedural programming. Discipline of computer science; analysis, design, implementation, debugging, and testing of software. Introduction to field for majors.
1412. [COSC 1337, 1437] Programming Principles II (4). Prerequisite: CS 1411 or ECE 1304. Advanced procedural programming. Topics include recursive functions, parameter passing, structures, records, memory allocation, exception handling, and abstract data types. Fulfills Core Technology and Applied Science requirement.
2350. [COSC 1319, 1419, 2319, 2325, 2419, 2425] Computer Organization and Assembly Language Programming (3). Prerequisites: CS 1412, ECE 2372. Introduction to the organization of single-processor computer systems via Assembly Language. Topics addressed include basic concepts of computer architecture and organization, assembly programming, interfacing assembly with High Level Languages, sub-procedures and macros, I/O devices, interrupts, and multitasking issues.
2365. Object-Oriented Programming (3). Prerequisite: CS 2413. Introduction to object-oriented programming. Topics include object-oriented design and analysis, classes, inheritance, polymorph data abstraction, and user interface design principles.
2413. [COSC 2315, 2336, 2415, 2436] Data Structures (4). Prerequisite: CS 1412. Comparative study of the interaction of data and procedural abstractions. Data structures, lists, stacks, queues, trees, graphs. Algorithms: searching, sorting, parsing, hashing, graph traversals.
3352. Introduction to Systems Programming (3). Prerequisites: CS 2350 or ECE 3362 and CS 2413. Introduction to system software including assemblers, linkers, loaders, and compilers. Other topics addressed include design of utility and networking software, shell programming, and script languages.
3361. Concepts of Programming Languages (3). Prerequisite: CS 2413. Study of programming language design. The investigation and comparison of different programming language paradigms.
3364. Design and Analysis of Algorithms (3). Prerequisites: CS 2413, 1382 and MATH 2360. A theoretical course focusing on the design and analysis of computer algorithms.
3365. Software Engineering I (3). Prerequisite: CS 2365 or 2413, MATH 3342, or equivalent. Introduces theory and practice for software engineering. Topics include software life cycle, requirements, specification and analysis, software architecture and detailed design, and testing. (Writing Intensive)
3366. Human Computer Interaction (3). Prerequisite: CS 2413. Focuses on design, development, and evaluation of computer systems that interact with people. Topics include interaction design models, interface components, and usability testing.
3368. Introduction to Artificial Intelligence (3). Prerequisite: CS 1382. This course provides introduction to theory, design, and implementation of intelligent systems.
3375. Computer Architecture (3). Prerequisite: CS 2350 or ECE 3362. Introduction to the functional components of computer systems; their hardware implementation and management at different levels; their interaction, characteristics, and performance as well as their practical implications for computer programming.
3383. Theory of Automata (3). Prerequisite: CS 1382. The relationship between language, grammars, and automata. Deterministic and nondeterministic machines. Pushdown automata and Turing machines. Limits of computability.
4000. Individual Studies in Computer Science (V1-6). Prerequisite: Advanced standing and departmental approval. Individual studies in computer science areas of special interest. May be repeated for credit.
4311. Senior Project Design (3). Prerequisites: CS majors only; CS 3365, 3364, and COMS 3358 or ENGR 2331; 12 additional hours of upper-division computer science coursework; senior standing. A project-oriented course intended not only to consolidate most theoretical aspects of software engineering, but also to emphasize team work and foster communication skills. Projects are formulated, formally proposed, designed, implemented, tested, documented, and demonstrated. (Writing Intensive)
4328. Scientific Computing (3). Prerequisites: CS 2413 and MATH 1452. Numerical techniques for interpolation, integration, and the solution of systems of algebraic and differential equations with special emphasis on hardware limitations.
4331. Special Topics in Computer Science (3). Prerequisites: Advanced standing and CS 3375. Advanced study in computer science topics.
4352. Operating Systems (3). Prerequisites: CS 3364 and 3375. Concepts and design of different components of operating systems. Topics addressed include process management, scheduling and resource management, file systems, I/O, and security issues.
4354. Concepts of Database Systems (3). Prerequisite: CS 3364. Overview of a database system and its components; physical organization of data; data models; relational databases; and query processing.
4365. Software Engineering II (3). Prerequisite: CS 3365. Advanced theory and practice for software engineering. Topics include project management, configuration management, process improvement, software security, software reuse, and quality management.
4366. Senior Capstone Project (3). Prerequisite: CS 4365. Project-oriented overview of software engineering concepts emphasizing teamwork and communication skills. Projects are formulated, formally proposed, designed, implemented, tested, documented, and demonstrated. (Writing Intensive)
4379. Parallel and Concurrent Programming (3). Prerequisites: CS 3364 and 3375. Introduction to multi-threaded programming, data parallelisms, and message passing techniques. Topics include concurrent and parallel execution environments, user-programmed parallelism, and compiler-based parallelism. Applications addressed involve numerical algorithms familiar to senior-level students.
4380. Embedded Systems (3). Introduction of special purpose embedded processor-based systems and their applications.
4391. Special Topics in A I (3). Prerequisite: Senior standing. In-depth treatment of one or more topics in artificial intelligence. Such topics include robotics, knowledge representation, or automated reasoning.
4392. Computer Networks (3). Prerequisite: CS 2413. Digital transmission fundamentals, local area networks, network protocols, and common Internet applications.
4395. Introduction to Computer Graphics (3). Prerequisite: CS 3364. Focus on basic principles and methods for designing, implementing, and applying graphics packages. Methods for manipulating and displaying two- and three-dimensional objects.
4397. Computer Game Design and Development (3). Prerequisite: CS 3364. Underlying science, technology, and art of computer games. Specific topics include design planning, interactive graphics, autonomous agents, multi-user interaction, and game engine construction.
4398. Theory and Practice of Logic Programming (3). Formal syntax and semantics of logics of programming languages, practical application of such languages, and linking GUI interfaces written in imperative languages.
5000. Practicum of Computing (V1-3). Industrial training in an approved field of graduate studies. Can be used only as an additional requirement on degree program.
5301. Foundations of Computer Science I (3). Prerequisite: Programming proficiency. An accelerated survey of computer science. Computer organization, high level and assembler languages, job control, software design, data structures, file organization, machines, and formal languages. These courses are for leveling purposes and cannot be applied towards course requirements of any CS graduate degree.
5302. Foundations of Computer Science II (3). Prerequisite: Programming proficiency. An accelerated survey of computer science. Computer organization, high level and assembler languages, job control, software design, data structures, file organization, machines, and formal languages. These courses are for leveling purposes and cannot be applied towards course requirements of any CS graduate degree.
5303. Foundations of Computer Engineering (3). An accelerated introduction to the fundamentals of computer engineering for students without a computer hardware background. Boolean algebra, digital logic, digital devices and functions, digital system design, computer architecture. These courses are for leveling purposes and cannot be applied towards course requirements of any CS graduate degree.
5320. Principles of Computer Graphics (3). Techniques and methods for creating realistic images using graphic programming languages. Topics include visible surface determination rendering, surface modeling, and particle systems.
5328. Scientific Computing (3). This course provides an overview of numerical methods that are essential to computing. Topics include matrix computations, statistical methods, numerical integration, and multiresolution methods.
5331. Special Problems in Computer Science (3). Individual studies in advanced computer science and technology.
5332. Special Topics in Software Engineering (3). Prerequisite: Consent of instructor. Studies in advanced software engineering.
5341. Pattern Recognition (3). Traditional and current approaches to the general problem of recognizing patterns in images, signals, and other domains. Includes Bayes decision theory, supervised learning, and nonparametric techniques.
5352. Advanced Operating Systems Design (3). Topics on distributed operating systems, such as synchronization, communication, file systems, and memory sharing are discussed. Several programming projects are implemented.
5353. Compiler Construction (3). Implementation aspects of compiler construction, automata for formal grammar, semantics of procedural languages, automatic generation of parser, and assembly code generation. A prototype of a compiler is developed.
5356. Advanced Database Management Systems (3). Systems aspects of relational databases are emphasized. Topics include relational database design, index and access structures implementation and performance evaluation, query processing and optimization, transaction management, and concurrency control.
5357. Multimedia Systems (3). Multimedia digital audio processing; image and video data compression; and processing for multimedia presentations. Time-based media representation and synchronization; multimedia communication systems; and hypertext and programming.
5358. Software Studio I (3). Capstone design and implementation experience of a major software project applying comprehensive software engineering techniques.
5361. Theory of Computing Languages (3). General language theory with emphasis on computing languages. Chomsky typology, syntactical and semantic specifications. Current research on translation of natural language instructions to machine instructions.
5363. Software Project Management (3). Explores the principles of software project management and their effective application. Topics include project, risk, process, and resource management and improvement techniques.
5365. Principles of Multiple-Processor Systems (3). Comprehensive introduction to the field of parallel and distributed computing systems. Algorithms, architectures, networks, systems. Theory and applications.
5368. Intelligent Systems (3). Comprehensive introduction to the field of artificially intelligent computer based systems. Theory and applications in artificial intelligence.
5373. Software Modeling and Architecture (3). This course introduces the theory and practice for software development and covers software requirements, analysis, software architecture and detailed design.
5374. Software Verification and Validation (3). This course introduces how to implement effective test and measurement programs as well as how to apply this knowledge to the production of low-defect software.
5375. Computer Systems Organization and Architecture (3). Introduction to the architecture, organization, and design of computer systems. Topics include processor, control and memory design, computer arithmetic, I/O, and a brief introduction to multiprocessors.
5376. Communication Networks (3). Networks in the context of parallel and distributed systems. Information theory applied to networks. Network topology. Problems and approaches in design, development, and management of communications networks.
5377. Distributed Computing (3). Introduction to distributed systems. Topics include communications, distributed operating systems, fault-tolerance, and performance issues. Case studies and term projects supplement this course.
5379. Parallel Processing (3). Introduction to parallel processing in theory, performance evaluation of parallel machine-algorithm ensemble, parallelization techniques of sequential codes, parallel algorithm design, and parallel API.
5380. Fault-Tolerant Computer Systems (3). Introductory course to methodologies for specifying, designing, and modeling fault-tolerant computer systems. Includes fault classification, design techniques for fault detection and recovery, and reliability modeling techniques.
5381. Analysis of Algorithms (3). Theoretical analysis of algorithms for sorting, searching, sets, matrices, etc.; designing efficient algorithms for data structures, recursion, divide-and-conquer, dynamic programming; nondeterminism, NP-completeness and approximation algorithms.
5383. Theory of Automata (3). Structured grammars, relation between grammars and automata, deterministic, and nondeterministic finite automata, push-down store, and linear-bounded automata, and Turing machines.
5384. Logic for Computer Scientists (3). An introduction to mathematical logic. The course includes proofs of several basic theorems and discusses the application of logic to different areas of computer science.
5386. Wireless Networking and Mobile Computing (3). Wireless networks and mobile computing at the level of the link, network, and transport layers. Focus on the special topics in each layer.
5388. Neural Networks (3). Neural network theory, models, and implementation. Applications to real-time systems, robotics, pattern recognition, computer vision, and event driven systems.
5391. A I Robotics (3). Programming of artificially intelligent robots. Topics include sensing, navigation, path planning, and navigating with uncertainty.
5392. Reinforcement Learning (3). Introduction to reinforcement learning and Markov decision processes and their applications for making optimal decisions.
5393. Bioinformatics (3). Computational analysis of biological sequences gene expression and protein structures. Topics include sequence alignment, gene expression data analysis, and geometric analysis of protein structure.
5398. Theory and Practice of Logic Programming (3). Formal syntax and semantics of logics of programming languages, practical application of such languages, and linking GUI interfaces written in imperative languages.
6000. Master's Thesis (V1-6).
6001. Master's Project (V1-6).
6002. Master's Report (V1-6).
7000. Research (V1-12).
8000. Doctor's Dissertation (V1-12).