400 Level Courses:
CSCI 453 Formal Language Theory
CSCI 454 Compiler Theory
CSCI 461 Artificial Intelligence
CSCI 495 Research and Development I
CSCI 496 Research and Development II
CSCI 290, 390, 490 Selected Topics
CSCI 391, 392, 491, 492 Research
CSCI 397, 398, 497, 498 Internship
CSCI 241: Discrete Mathematics. 3 hours.
Prerequisite: two years of high school algebra.
This course includes propositional logic, induction and recursion, number theory, set theory, relations and functions, graphs and trees and permutations and combinations. Same as MATH 241.
CSCI 251: Introduction to Computer Science. 4 hours.
An introduction of various areas of computer science. A major component is programming design and development using JAVA. A disciplined approach to problem solving methods and algorithm development will be stressed using top-down design and stepwise refinement. Topics included are syntax and semantics, I/O, control structures, subroutines and modularity, data types and fundamental algorithms. Also discussed are the ethics of computing.
CSCI 261: Data Structures. 4 hours.
Prerequisite: CSCI 241, CSCI 251. Students must receive a grade of C or better in the prerequisites.
An in-depth study of data structures, including arrays, records, stacks, queues, lists, trees, heaps and hash tables. The study includes the definition, specification and implementation of these structures, as well as examples of their uses. Also included is an introduction to the internal representation of information.
CSCI 262: Algorithms. 3 hours.
Prerequisite: CSCI 261, MATH 231. Students must receive a grade of C or better in the prerequisites.
This course examines the design and efficiency of sequential and parallel algorithms. The algorithms studied include sorting and searching, pattern matching, graph algorithms and numerical algorithms. Standard algorithmic paradigms are studied such as divide and conquer, greedy methods and dynamic programming. We will consider the time and space complexity analysis of sequential and parallel algorithms and proofs of algorithm correctness.
CSCI 331: Operating Systems. 3 hours.
Prerequisite: CSCI 261.
The concepts underlying operating systems are studied. Topics include file systems, COS scheduling, memory management, deadlocks, concurrent processes and protection.
CSCI 340 Numerical Analysis. 3 hours.
Prerequisite: MATH 231, MATH 232.
Numerical solutions to mathematical problems are studied. Topics include approximating solutions to equations, interpolation, numerical differentiation and integrating, and numerical linear algebra. Same as MATH 340.
CSCI 351 Programming Languages. 3 hours.
Prerequisite: CSCI 262, MATH 232.
This course includes the history, design and implementation of various programming languages. The strengths and weaknesses of each language will be studied and the comparisons among the languages will be highlighted. Specific languages studied may include a scientific language, an object-oriented language, a functional language, a logic programming language, a scripting language and a database query language. Also included will be brief introductions to compiler design and to automata and formal language theory.
CSCI 361 Computer Organization. 3 hours.
Prerequisite: CSCI 262.
A detailed study designed to teach the building blocks of a computer system and basic computer organization concepts. Subjects include hardware, machine code, assembly language, compilers, operating systems and high-level languages, as well as digital logic, performance issues and binary arithmetic.
CSCI 371 Software Engineering. 3 hours.
Prerequisite: CSCI 262.
Systems engineering concepts for the design and implementation of computing projects. Project life cycle studies include rapid prototyping paradigms as well as the classical cycle of requirements, design and implementation phases. Project management is discussed, including considerations in selecting hardware platforms. The methodologies are reinforced through a group project. Must be taken in the junior year.
CSCI 453 Formal Language Theory. 3 hours.
Prerequisite:MATH 234 or CSCI 241 and CSCI 262.
A formal study of the mathematical basis for computer software. The following topics are included: finite automata, regular expressions, context-free languages, pushdown automata, Turing machines, decidability and computability.
CSCI 454 Compiler Theory. 3 hours.
Prerequisite: CSCI 351. Recommended prerequisite: CSCI 453.
The translation of high-level languages into low-level languages is studied, including syntax definition, lexical analysis, syntax analysis and the role of the parser. Other topics include type checking, run-time environments, code generation and code optimization.
CSCI 461 Artificial Intelligence. 3 hours.
Prerequisite: CSCI 351.
A survey of the main applications of artificial intelligence includes natural language processing, robotics and expert systems. The principles of artificial intelligence are studied, including such topics as search strategies, deduction systems and plan generation systems. Labs use a version of the LISP language.
CSCI 495 Research and Development I. 3 hours.
Prerequisite: CSCI 351, CSCI 371.
First semester in the capstone course sequence. Experience in research and development of computer software with emphasis on requirement specification and design. Requires team development of a project plan, requirements specification and design specification. May require the development of a prototype. Development must follow an established software development process. Includes exploration of the ethical and professional responsibilities of a software developer.
CSCI 496 Research and Development II. 3 hours.
Prerequisite: CSCI 495 with grade of C or better.
Second semester in the capstone sequence. Continuation of the software development project started in CSCI 495 with emphasis on detailed design, implementation and delivery. Requires refinement of the requirements specification, design specification, implementation of the design, delivery of the application, customer training and participation in departmental assessment activities.