200 Level Courses:
CSCI 241: Discrete Mathematics
CSCI 251: Introduction to Computer Science
CSCI 261: Data Structures
CSCI 262: Algorithms
CSCI 277: Web and Mobile Application Development
CSCI 282: Foundations of Game Development
300 Level Courses:
CSCI 315: 3D Game Development
CSCI 331: Operating Systems
CSCI 340: Numerical Analysis
CSCI 351: Programming Languages
CSCI 355: Database
CSCI 361: Computer Organization
CSCI 371: Software Engineering
CSCI 395: Applied Projects
400 Level Courses:
CSCI 453: Formal Language Theory
CSCI 454: Compiler Theory
CSCI 461: Artificial Intelligence
CSCI 474: Al for Game Development
CSCI 475: Game Development Practicum I
CSCI 476: Game Development Practicum II
CSCI 489: Research and Development
CSCI 290, 390, 490: Selected Topics
CSCI 391, 392, 491:, 492 Research
CSCI 397, 398, 497, 498: Internship
Prerequisite: MATH 211; MATH 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.
Prerequisite: Two years of high school algebra.
An introduction to 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.
Prerequisite: 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.
Prerequisite: CSCI 261, MATH 231 or MATH 236. 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.
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.
Prerequisite: CSCI 262. 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.
Prerequisite: CSCI 282, MATH 233, MATH 235. An 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 included a 3D game development project.
Prerequisite: CSCI 262.
The concepts underlying operating systems are studied. Topics include file systems, COS scheduling, memory management, deadlocks, concurrent processes and protection.
Prerequisite: MATH 231 or MATH 236, MATH 232.
Numerical solutions to mathematical problems are studied. Topics include approximating solutions to equations, interpolation, numerical differentiation and integrating, and numerical linear algebra.
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.
Prerequisites: CSCI 261 and CSCI 277.
A detailed examination of the use of database management systems. Topics include conceptual design, logical design, physical design, normalization, relational algebra, SQL queries, and an introduction to transaction processing.
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.
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.
Prerequisites: CSCI 355 and CSCI 371.
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.
Prerequisite: CSCSI 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.
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.
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.
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.
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. Student 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.
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.
Prerequisite: CSCI 351, CSCI 355, and CSCI 371.
Capstone course emphasizing the development of computer software. The course requires students working on a team to follow a well-defined Agile software development process, which includes requirement specification, architectural design, detailed design, implementation, delivery and testing. Appropriate levels of documentation and modeling are required. Development teams make multiple presentations to customers and other stakeholders during the semester.