CDA 3100
Computer Organization I (3)
Corequisites: COP3330, MAD2104.
This is a core course intended for computer science majors with previous C/C++ background. The course introduces fundamental concepts in computer organization and digital logic design, includeing numbering systems and number representation, logic gates and design, the Von-Neumann architecture principle, and the machine instruction cycle. Assembly language programming with C language interfacing is also presented, reinforcing basic computer structure and machine cycle operation principles.
CDA 3101
Computer Organization II (3)
Prerequisite: CDA 3100
Fundamental concepts in processor design, including datapath and control, pipelining, memory hierarchies, and I/O.
CDA 4150
Computer Architecture (3)
Prerequisites: CDA 3101; MAD 3105
High performance architecture design and analysis, including memory-system design, pipelining, vector computers, and multiprocessors.
CEN 4020
Software Engineering I (3)
Pre- or Corequisite: COP 4530
The first of a two-semester software engineering-sequence, integrating theory and practice through a project. Topics include theory, tools, requirements elicitation, software-requirements specification, requirement review, software development, ethics, software-development life cycle, teams, and project management. Oral presentation required.
CEN 4021
Software Engineering II - Design & Implementation (3)
Prerequisites: CEN 4020.
This course is the second semester of a two-semester software engineering sequence with focus on software project systems development. Topics include software design, software architectures, testing, deployment, software metrics, configuration management, reusability, portability and interoperability.
CEN 4681
Expert Systems (3)
Prerequisite: COP 4530
Topics include: definitions and historical development, methodology tools for analysis and design, survey of existing systems, inference engines, and theory and applications of fuzzy relational products to new developments in inference engines.
CEN 5064 Advanced Software Design (3)
Prerequisites: CEN 5035
This course concentrates on the design of software systems after requirements engineering has been completed. The course offers education in techniques such as architectural design, pattern integration, and refactorings.
CGS 3408
Introduction to Programming with the C Language (3)
Prerequisite: MAC 1140
This course is an introduction to C programming. Topics include types, operators, and expressions; control flow; IO; functions and program structure; and software design techniques. Eight to ten programming projects are required.
CIS 3931
Ethics for Computer Science (3)
Prerequisite: COP 3502.
This is a theory and skills course intended for students with a basic knowledge of computer science principles and programming languages. The course introduces fundamental concepts and analytical methods in Ethics, along with ethical, legal and social issues and questions in computer science that call for ethical analysis.
CIS 3943 Computer Science Internship (3-6)
Prerequisites: COP 4530
Successful completion of 60 hours of coursework with a minimum overall GPA of 3.0, including 15 hours in computer science courses (prefixes of CAP, CDA, CEN, CGS, CIS, COP, COT) with a minimum GPA of 3.2; approval of internship coordinator required. Field placement in approved industry or government entity having significant information technology or computer science component by approval only. May be taken for variable credit and repeated (with departmental approval) but only three (3) semester hours may count towards graduation. Successful completion requires satisfactory job evaluation and demonstration of educational value of placement, usually via a paper and/or presentation. May be repeated to a maximum of twelve (12) semester hours.
CIS 4900 ES Applications (1-4)
Directed Individual Study. May be repeated to a maximum of twelve (12) semester hours.
CIS 4930
Generic Programming (3)
Prerequisite: COP 4530.
Generic Programming Principles and Techniques, including most of the following topics: Generic Containers; Function and Predicate Objects; Generic Algorithms; Mediation between containers and algorithms with iterators; Containers and Algorithms in the C++ STL Vectors, Lists, and Deques; Stacks, Queues, Priority Queues, Ordered Sets and Maps, Hashed Sets and Maps, Iterators and Iterator Adaptors, General algorithms, Set algorithms, Heap algorithms, Search algorithms, and Sort algorithms; Extending the STL; Graphs, Digraphs, and Graph Algorithms; Policy Based Design; Partial template specialization; Traits; Typelists; Design Pattern Implementations: Singletons; Smart Pointers; Abstract Factory; and related special topics.
CIS 4930r
Special Topics in Computer Science (3)
Prerequisite: at least six (6) semester hours in computer science or software engineering at or above the 4000 level. May be repeated to a maximum of twelve (12) semester hours.
CIS 5935
Introductory Seminar on Research (2)
(S/U grade only)
A series of lectures given by faculty on the research being conducted by the Department of Computer Science. Other lectures include guidelines on the preparation of the doctoral portfolio, and on the use of library research tools.
COP 3014
Programming I (3)
Prerequisite: MAC 1140.
Fundamental concepts and skills of programming in a high-level language. Flow of control: sequence, selection, iteration, subprograms. Data structures: arrays, strings, structs, ADT lists and tables. Algorithms using selection and iteration (decision making, finding maxima and minima, basic searching and sorting, simulation, etc.). Good program design using a procedural paradigm, structure, and style are emphasized. Interactive and file IO. Testing and debugging techniques. Intended primarily for computer science or computer engineering majors, or anyone who is required to take COP 3330.
COP 3252
Internet Applications Programming with Java (3)
Prerequisites: COP 3330.
This course covers the applications of the Java language to education, electronic commerce, scientific research, and distributed systems in general. Topics include the following: the architecture of the Web, including software protocols for passing information in typical Web applications; introduction to the Java programming language; developing Graphical User Interfaces using Swing; an introduction to distributed objects using Java Remote Method Invocation (RMI); and server-side programming using Servlets and JDBC. Emphasis is placed on practical programming using these technologies.
COP 3330
Object Oriented Programming (3)
Prerequisite: CGS 3014.
Pre- or Co requisite: COP 3344
Object-oriented programming in a modern programming language; classes, objects, inheritance, and polymorphism; introduction to data structures and container classes.
COP 3344
Introduction to UNIX (1)
This is an introductory course in the use of the UNIX operating system designed for both majors and non-majors. Topics include: UNIX history, requesting UNIX accounts, logging in to a UNIX system, basic operating system concepts and file structure, basic commands, text editor(s) (to include emacs, vi, and pico), printing, mail, and online help. The goals of this course are to enable students to log in to their UNIX accounts from any type of computer and have a basic understanding of the commands and utilities.
COP 3353
Introduction to UNIX (1)
This is an introductory course in the use of the UNIX operating system designed for both majors and non-majors. Topics include: UNIX history, requesting UNIX accounts, logging in to a UNIX system, basic operating system concepts and file structure, basic commands, text editor(s) (to include emacs, vi, and pico), printing, mail, and online help. The goals of this course are to enable students to log in to their UNIX accounts from any type of computer and have a basic understanding of the commands and utilities.
COP 4020
Programming Languages (3)
Prerequisite: COP 4530
A survey of programming languages and language features and an introduction to compilers. Languages to be discussed include Fortran, Pascal, Ada, PL/1, APL, and Lisp. Oral presentation required.
COP 4380
Reactive Systems Programming (3)
COP 4530
Data Structures, Algorithms and Generic Programming (3)
Prerequisites: COP 3330; MAD 2104.Pre- or corequisite: CDA 3100.
Definition, use and implementation of generic data structures using a modern programming language; reusable program components.
COP 4530
Data Structures, Algorithms and Generic Programming (3)
Prerequisites: COP 3330; MAD 2104
Pre- or co requisite: CDA 3100
Definition, use, and implementation of generic data structures using a modern programming language; reusable program components.
COP 4531
Complexity and Analysis of Data Structures and Algorithms (3)
Prerequisite: COP 4530; MAD 3105; STA 4442
Analysis of the complexity of algorithms, including sorting, searching, and graph algorithms; use and implementation of graphs.
COP 4610
Operating Systems and Concurrent Programming (3)
Prerequisite: COP 4530
Pre- or Co requisite: CDA 3101 or consent of instructor
Design principles of batch, multiprogramming, and time-sharing operating systems; linking, loading, input-output systems, interacting processes, storage management, process and resource control, file systems.
COP 4610
Operating Systems (3)
Prerequisite: COP 4530.
Pre- or Corequisite: CDA 3101. Design principles of batch, multiprogramming, and time-sharing operating systems; linking, loading, input-output systems, interacting processes, storage management, process and resource control, file systems.
COP 4710
Theory and Structure of Databases (3)
Prerequisites: COP 3330, MAD 2104.
Theory of relational and object-oriented databases; relational database management systems and SQL; design, development, and implementation issues in database systems.
COT 4420
Theory of Computation (3)
Prerequisite: MAD 3105
Introduction to the theory of computation, including models of computation such as Turing machines; theory of programming languages, including grammars, parsing, syntax, and semantics.
MAD 2104
Discrete Mathematics I (3)
Prerequisite: MAC 1140. Credit is not also allowed for MGF 3301
Mathematical techniques of definition and proof, with application to discrete domains; formal logic; elementary combinatorics; digraphs and relations; graphs, trees, and multigraphs; applications.
MAD 3105
Discrete Mathematics II (3)
Prerequisite: MAD 2104 or MGF 3301
Techniques of definition and logical argument as applied in several areas of discrete mathematics; counting techniques, permutations, combinations; recurrence relations, graph and network algorithms.
STA 3032
Applied Statistics for Engineers and Scientists (3–5)
Prerequisite: MAC 2312
This course will cover calculus-based probability, discrete and continuous random variables, joint distributions, sampling distributions, and the central limit theorem. Topics include descriptive statistics, interval estimates and hypothesis tests, ANOVA, correlation, simple and multiple regression, analysis of categorical data, and statistical quality control.