Computer Science Course Descriptions

100 Level Courses
CSCI 152: Fundamentals of Programming. 3 hours.

An introduction to problem solving with computers. Students investigate and implement solutions to a range of problems, with a concentration on multimedia and interactive applications. Suitable for non-majors who want to learn about computers and programming.

200 Level Courses
CSCI 241: Discrete Mathematics. 3 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 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 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 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 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 282: Foundations of Game Development. 3 hours.

Prerequisite: CSCI 251. An introduction to game development. Topics explored in the course include game genres, game concepts, game design principles, the game development process, the actors in the game development process, 2D game design and scripting. This course includes a 2D game development project.

CSCI 290, 390, 490: Selected Topics. 1-3 hours.

Selected Topics are courses of an experimental nature that provide students a wide variety of study opportunities and experiences. Selected Topics offer both the department and the students the opportunity to explore areas of special interest in a structured classroom setting. Selected Topics courses (course numbers 290, 390, 490) will have variable titles and vary in credit from 1-3 semester hours. Selected Topic courses may not be taken as a Directed Study offering.

CSCI 291, 391, 491: Research. Variable hours.

Many academic departments offer special research or investigative projects beyond the regular catalog offering. Significant responsibility lies with the student to work independently to develop a proposal for study that must be approved by a faculty mentor and the appropriate department chair. The faculty member will provide counsel through the study and will evaluate the student’s performance. Sophomores, juniors and seniors are eligible. Students must register for research (291, 292, 391, 392, 491 or 492) to receive credit and are required to fill out a Permission to Register for Special Coursework form. It is recommended that students complete not more than 12 hours of research to apply toward the baccalaureate degree.

300 Level Courses
CSCI 315: Advanced Game Development. 3 hours.

Prerequisite: CSCI 282An examination of the development of 3-dimensional games using a game engine. Topics include basic 3D computer graphics, the graphics pipeline, 3D game scripting, game development using a game engine, physic engines, incorporating external models and media. This course includes a 3D game development project.

CSCI 322: Human Computer Interface Design and Technology. 3 hours.

From cell phones to supercomputers, smart speakers to autonomous automobiles, there are now many more computers than human upon the earth. Human-computer interfaces provide the bridges across which humans engage with the digital realm. This course provides both an overview and hands-on experience with the design, techniques, and technology underlying such interfaces, placing equal weight on concepts and projects. Students will complete programming and design projects employing both traditional graphical interfaces; distributed GUIs (e.g., tablets, smartphones combined with LCD displays); virtual and augmented reality (e.g., Oculus Rift); and hands-on electronics. Students will develop projects involving Java, Python, JavaScript/HTML5, C++, and/or C#, with much freedom given to student teams. Some prior programming experience in at least one of these languages is recommended.

CSCI 340: Numerical Analysis. 3 hours.

Prerequisite:  MATH 231 or MATH 236, and MATH 232. 
Numerical solutions to mathematical problems are studied. Topics include approximating solutions to equations, interpolation, numerical differentiation and integrating, and numerical linear algebra.

CSCI 342: Computer Systems Concepts. 3 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 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 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 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 395: Applied Projects. 3 hours.

Prerequisite: ARTZ 314, CSCI 152 and CSCI 322. For Computer Science majors and minors, CSCI 261 and CSCI 277. A project-based course in software development. Students will work as members of software development teams. The projects will be conducted following a software development methodology.

CSCI 397, 497: Internship. Varies hours.

Interns must have at least 60 credit hours, completed appropriate coursework and have a minimum GPA of 2.5 prior to registering for academic credit. Also, approval must be obtained from the student's faculty sponsor and required forms must be completed by the deadline. Note: *Architecture, Music Therapy and Education majors do not register internships through Career Planning & Development. These students need to speak with his/her advisor regarding credit requirements and options. S/U grading.

400 Level Courses
CSCI 453: Formal Language Theory. 3 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 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.

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 474: Al for Game Development. 3 hours.

Prerequisite: CSCI 315.  This course examines Al topics related to the development of games. Topics include basic intelligent algorithms for movement (chasing and evading, flocking, pattern movement, etc.), path finding and waypoints algorithms, use of the A* algorithm, rule-based Al, Al engines, and genetic algorithms.

CSCI 475: Game Development Practicum I. 3 hours.

Prerequisite: CSCI 371 and CSCI 474
The first semester of a studio based interdisciplinary game development project. The course brings students from a variety of disciplines together to participate in a game development project. Students work under the direction of a team of faculty from the Computer Science and Applied Media program. Students fill game development roles on the project such as game designer, producer, programmers, animator, visual effects artist, special effects artist, 3D modeler, screen writer, audio composer (engineer), QA testing, advertising and marketing.

CSCI 476: Game Development Practicum II. 3 hours.

Prerequisite: CSCI 475.  The second semester of a studio based interdisciplinary game development project. This course is a continuation of CSCI 475. CSCI 475 and CSCI 476 must be taken in consecutive semesters during the same academic year.

CSCI 495: Research and Development I. 3 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 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.