Computer Science: Software Engineering

The Bachelor of Science in Computer Science-Software Engineering major is designed for students wishing to find positions as computer scientists, as software developers, or to pursue graduate study. The major requires a core of computer science courses (23 hours) covering essential elements of the Computer Science Body of Knowledge that all computer science graduates must master. In addition to the core computer science courses, 15 additional hours of computer science course work in hardware, systems, theory, and software engineering is required. The major also requires 8 hours of support work in mathematics. Students are strongly encouraged to complete an internship as additional coursework.

Students may not pursue both the Bachelor of Science in Computer Science-Game Development and the Bachelor of Science in Computer Science-Software Engineering.

The Computer Science-Software Engineering major requires a minimum of 46 hours.

A grade of C or higher must be achieved in CSCI 251.
A grade of C or higher must be achieved in CSCI 261 and MATH 231/MATH 236 in order to proceed to CSCI 262.

Required Courses (38 hrs.) 

CSCI 241: Discrete Mathematics
3 credit hours

Prerequisite: MATH 211MATH 231; or MATH 236. This course includes propositional logic, induction and recursion, number theory, set theory, relations and functions, graphs and trees, and permutations and combinations.

CSCI 251: Introduction to Computer Science
4 credit hours

An introduction to computer science through applications such as media. A major component is programming design and development using a language such as Python or 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, input and output, control structures, modularity, data types, and object-oriented programming. Recommended for students with previous programming experience or a strong mathematical background (math ACT score of 24 or above).

CSCI 261: Data Structures
4 credit hours

Prerequisite: CSCI 251 with a grade of C or higher. 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 credit hours

Prerequisite:  CSCI 261 with a grade of C or higher; and MATH 231 or MATH 236 with a grade of C or higher. 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 277: Application Development I
3 credit hours

Prerequisite: CSCI 251. An examination of both web-based and mobile applications. The course covers the design of client-server architectures, client side scripting, user interface design, and application and database interaction.

CSCI 342: Computer Systems Concepts
3 credit hours

Prerequisite: CSCI 261. An integrated introduction to computer systems fundamentals. Topics include computer architecture and major components, operating system concepts and implementation techniques (processes, threads, memory management, and distributed systems), and network theory, concepts and techniques.

CSCI 351: Programming Languages
3 credit hours

Prerequisite:  CSCI 262MATH 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 357: Application Development II
3 credit hours

Prerequisites: CSCI 261 and CSCI 277. A detailed examination of secure client-server application development. Topic include data driven applications, database design and access, data transfer, data services and network protocols.

CSCI 371: Software Engineering
3 credit 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 495: Research and Development I
3 credit hours

Prerequisite: CSCI 351CSCI 357, and 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 credit hours

Prerequisite: CSCI 495 with a grade of C or better. Second semester 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.

Choose one (3 hrs.): 

CSCI 453: Formal Language Theory
3 credit hours

Prerequisite: CSCI 351 or MATH 234. 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 credit hours

Prerequisite:  CSCI 351 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.

Support Courses (8 hrs.)

MATH 231: Calculus I
4 credit hours

 It is strongly recommended that students have completed two years of high school algebra and one semester of high school trigonometry in order to be successful in this course. A study of the fundamental principles of analytic geometry and calculus with an emphasis on differentiation.

MATH 232: Calculus II
4 credit hours

Prerequisite:  MATH 231 or MATH 236. It is recommended that students receive a grade of C or better in MATH 231 or MATH 236 to be successful in this course. Continuation of Calculus I including techniques of integration and infinite series.