Computer Science (CS)
 
CS 1113 BASIC Programming  2-2-3
Prerequisite: MATH 1113 or concurrently
This course covers the fundamentals of computer programming and the use of a computer for performing calculations and using data files. Microcomputers are used in laboratory assignments. Students are taught the concepts of counters, accumulators, decision-making, looping, subroutines, arrays, files, DOS operations, and string processing. (CSci majors may not receive degree credit for this course).
 
CS 1301 Computer Science I  3-2-4
Prerequisite: MATH 1113 or concurrently
This course provides an introduction to computer science with a focus on structured programming. Topics include an overview of computers and programming, problem-solving and algorithm development, simple data types, arithmetic and logical operators, selection and repetition structures, text files, one- and two-dimensional arrays, procedural abstraction and software design, and modular programming including subprograms. Programming assignments focus on the techniques of good programming style and how to design, code, debug, and document programs.
 
CS 1302 Computer Science II 3-2-4
Prerequisite: CS 1301
This second course in computer science provides a focus on both abstraction and advanced programming techniques. Topics include abstract data types, multi-dimensional arrays and records, sets and strings, binary files, searching and sorting, introductory algorithm analysis, recursion, pointers and linked lists, software engineering concepts, and dynamic data structures (stacks, queues, and trees). Programming assignments emphasize good software development principles such as information hiding, re-use, use of symbolic debuggers, and separate compilation.
 
CS 2123 C Programming 2-2-3
Prerequisite: MATH 1113 or concurrently
This course covers the beginning concepts of programming logic and algorithms using the C Programming Language. (CSci majors may not receive degree credit for this course).
 
CS 2143 FORTRAN Programming 2-2-3
Prerequisite: MATH 1113 or concurrently
A fundamental course in FORTRAN programming covering data types, basic operations, control structures, arrays, functions and subroutines, I/O formatting, and sequential file access. (CSci majors may not receive degree credit for this course).
 
CS 2224 Computer Architecture and Assembly Language 3-2-4
Prerequisite: CS 1301
This course emphasizes the relationships between computer software and hardware. Number systems and basic computer system principles are addressed, followed by more detailed coverage of digital logic, microprogramming, and instruction set design. Assembly language programming is covered to the extent appropriate for teaching architectural concepts associated with a modern microprocessor. Advanced architectural concepts (e.g., RISC and parallel processing) are covered as time permits.
 
CS 2643 Computers and Society 2-0-2
Prerequisite: CS 1302
This course deals with current issues of computers, ethics, and social values. Topics include ethics, computer crime, abuse, social responsibility, risk analysis, computer law and cultural impact. This course includes library and internet research components.
 
CS 3123 Programming Language Concepts 3-0-3
Prerequisites: CS 1302, CS 2224
A comparative study of programming languages covering their history, development, and different design criteria; their formal definitions of syntax and semantics; their concepts and constructs; and the similarities and differences between languages. The course includes examination of object-oriented, functional, and concurrent languages, exception handling, modularization, scoping, etc. The use of programming tools that enable the student to practice the course objectives are incorporated.
 
CS 3153 Database Systems 3-0-3
Prerequisite: CS 1302
This course covers various database models including hierarchical, network, relational, and object-oriented. Also included is an overview of various file structures including sequential, indexed-sequential, and direct. Labs use an SQL based database product such as Oracle.
 
CS 3244 Operating Systems 4-0-4
Prerequisites: CS 3423, CS 2224
An introduction to basic operating system principles. Process management, memory management (real and virtual), peripheral device management, file systems, and distributed systems are introduced and examined from a conceptual viewpoint. Selected aspects of operating systems are explored in greater depth via software simulation projects. A research project is also required.
 
CS 3423 Data Structures and Algorithm Analysis 2-2-3
Prerequisite: CS 1302
Advanced algorithms for storing, searching, listing, and updating of data structures are covered. Analysis of algorithms is included. The course is taught in C++, but prior knowledge of C/C++ is not assumed. Topics include object-oriented programming concepts, advanced sorting and searching methods, advanced tree topics, graphs, priority queues and heaps, and hashing.
 
CS 3623 Applications Programming in C 2-2-3
Prerequisite: CS 3423
The computer programming language C presented with a focus on its use in applications involving systems programming, low- and high-level features, graphics, and libraries of program units. Laboratory projects are required.
 
CS 3643 Applications Programming in C++ 2-2-3
Prerequisite: CS 3423
Applications programming in C++ starting with abstract data types coded in classes and working toward the object-oriented features of C++, including class inheritance, genericity, and re-use through object-class libraries. The course focuses on C++ within the object-oriented paradigm and includes individual lab exercises and a team project in an appropriate problem domain.
 
CS 3663 Applications Programming in Java  2-2-3
Prerequisite: CS 3244
The computer programming language Java is presented with emphasis on its use for developing graphical user interfaces, and client/server applets and applications. Laboratory projects are required.
 
CS 3683 Applications Programming in Ada 2-2-3
Prerequisite: CS 3244
The computer programming language Ada is presented with a focus on its use in applications that involve multi-tasking and as a vehicle for applying a software engineering approach to software development. Laboratory projects are required.
 
CS 3901-3904 Special Topics variable credit-1 to 4 hours
Prerequisite: Junior standing
Special topics selected by the department. Offered on a demand basis.
 
CS 4243 System Programming in Windows and UNIX 2-2-3
Prerequisite: CS 3244
Concepts of system programming in Windows and in UNIX environments are presented. In addition to projects which involve implementation of system programming in both environments, students complete and present a major programming project in the environment of their choice.
 
CS 4263 Computer Networks 3-0-3
Prerequisite: CS 3244
Issues involved in computer-to-computer communications are examined based on the layered ISO Reference Model on Open Systems Interconnection. The objectives and methodologies of each layer are studied, with particular emphasis on the Datalink, Network, and Transport layers. Also explored are the various protocols for Local Area Networks and Wide Area Networks including wired and wireless solutions. Laboratory projects involve simulation and implementation of various aspects of inter-computer communication. Students are required to write a paper and present the findings on some of the latest network technologies.
 
CS 4283 Real-Time Systems 3-2-4
Prerequisites: CS 3244, CS 4624, ENGL 2010, SPCH 2400
This course covers the software-development life cycle as it applies to real-time systems. Labs involve the use of a real-time operating system and an associated development environment. System performance issues are also discussed. Major project included.
 
CS 4324 User-Centered Design 3-2-4
Prerequisite: CS 3423 for CSci majors; permission of CS department head for others
A course that presents the fundamental knowledge, processes, skills, and practices leading to the user-centered design of computer systems and applications. The course addresses the effectiveness of human interactions with computers by examining issues of physical ergonomics, cognition and perception, human memory and information processing, and usability. Software engineering techniques are covered leading to improved system effectiveness in supporting use of computers, user learning, diversity in interaction styles, and individual versus group work. Class exercises provide practice of needed skills. A major design and development project that integrates all aspects of user-centered design is included.
 
CS 4354 Computer Graphics and Multimedia 3-2-4
Prerequisites: CS 4624, ENGL 2010, SPCH 2400
The basic principles and practices of interactive computer graphics and multimedia systems are covered in this introductory course. The design and implementation of state-of-the-art computer graphic rendering and visual multimedia systems are the main part of the course. The sub-topics of the course deal with specific input/output hardware devices and their technology, software and hardware standards, programming methods for implementing 3-dimensional graphical applications and interactive multimedia applications, and a study and evaluation of the effectiveness of graphic/multimedia communications. A large component of the class is the building of a large-scale application.
 
CS 4423 Logical Foundations of Computer Science 3-0-3
Prerequisites: CS 3423, MATH 3345, senior standing
An elective course surveying computability theory, finite state machines, automata, parsing, grammars, and selected aspects of compiler construction. Particularly useful for students contemplating attending graduate school in computer science.
 
CS 4453 Simulation and Modeling 2-2-3
Prerequisites: MATH 2260, a programming course
An introduction to the basic role of simulation in system modeling. Presents approaches to organizing and conducting simulation studies. Emphasis is on the principles and practice of discrete-event simulation using one or more applicable programming languages.
 
CS 4523 Artificial Intelligence 3-0-3
Prerequisite: CS 3423
An introduction to artificial intelligence, with an emphasis on searching techniques, knowledge representation, and problem-solving strategies.
 
CS 4554 Expert Systems 3-2-4
Prerequisites: CS 4624, ENGL 2010, SPCH 2400
An introduction to the development of expert systems, with an emphasis on the role of domain knowledge, knowledge acquisition, expert knowledge representation, and implementation. A major project is required.
 
CS 4624 Software Engineering 3-2-4
Prerequisite: CS 3153
The entire software engineering life cycle is explored, with emphasis on the initial phases. Topics include problem definition, systems analysis, requirements gathering, cost and benefit analysis, proposal preparation, prototyping, design techniques and usability testing. Software engineering principles, practices, and design standards are examined through case studies. Various structured analysis and design tools are used by students in conjunction with real-world projects. A major component is a team project which goes through prototyping and usability testing.
 
CS 4683 Management Information Systems 3-0-3
Prerequisite: Senior standing
A study of the information needs in a formal organization and the information systems required to meet those needs within the planning, control, operating and decision making processes.
 
CS 4724 Software Engineering Project 3-2-4
Prerequisites: CS 4624, ENGL 2010, SPCH 2400
This major project course is a follow-up to CS 4624. Emphasis is placed on completing the entire software engineering life cycle in team projects. Topics include software development, testing, implementation, and user manuals. Software engineering methodologies and some formal methods are covered. Software CASE tools are utilized in the projects from planning and analysis through implementation.
 
CS 4743 Object-Oriented Development  3-0-3
Prerequisites: CS 3423, CS 3123
This course covers the concepts of object-oriented analysis, design, and programming. Topics include objects, classes, messages, methods, encapsulation, and inheritance. Projects emphasize object-oriented problem-solving and are implemented in languages such as C++ and Smalltalk.
 
CS 4804 Senior Project 3-2-4
Prerequisites: CS 4624, ENGL 2010, SPCH 2400, consent of the department head
An individual senior-level project course applying the theories, tools, and techniques of Computer Science. This involves a major report and oral presentation under the direction of a CS faculty member.
 
CS 4901-4904 Special Topics variable credit-1 to 4 hours
Prerequisite: Senior standing
Special topics offered by the department on a demand basis.