Program Design and Development (CS 227)
Programming in an object-oriented language such as Java for students with significant prior programming experience. Topics include types, control structures, classes, arrays, sorting, algorithm analysis, recursion, program development, and implementation of abstract data types using linear structures and binary trees.
Introduction to Discrete Structures (CS 245)
An introduction to mathematical concepts for Computer Science. Topics include first-order logic and logical arguments, proof techniques with an emphasis on mathematical induction, sets, relations and functions, properties of integers, counting methods, probability, and recurrences.
Computer Organization (CS 252)
Basic machine organization; elementary hardware concepts; CPU internals. Machine operations and instructions; assembly language concepts and programming.
Object Oriented Programming and Design (CS 335)
Fundamentals of object-oriented software development. Includes design principles, inheritance, polymorphism, Unified Modeling Language (UML), testing, event-driven programming with graphical user interfaces, applications of design patterns, and use of existing frameworks.
Analysis of Descrete Structures (CS 345)
Introduction to and analysis of algorithms and characteristics of discrete structures. Course topics include algorithm analysis techniques, recurrence relations, structural induction, hierarchical structures, graphs, hashing, and sorting.
Systems Programming and Unix (CS 352)
Programming in C, including single and multi-dimensional arrays, lists, stacks, queues, trees, and bit manipulation. Unix topics, including debuggers, makefiles, shell programming, and other topics that support systems programming.
Comparative Programming Languages (CS 372)
Introduction to several major high-level programming languages and their characteristics. Programming projects are required in at least three languages.
Introduction to Parallel and Distributed Programming (CS 422)
Concepts and applications of parallel and distributed programs. Process interaction using shared variables and message passing; parallel computing; development of correct programs; general problem solving techniques; scientific computing; distributed systems. Programming assignments on multiple processor machines.
Computer Networking (CS 425)
This course explores the principles of computer networking and its role in distributed computing, with an emphasis on network software design. The course focuses on the underlying concepts of networking by discussing such topics as: network architecture: protocol, layering, encapsulation - resource allocation: multiaccess networks, congestion control - end-to-end services: reliability, flow control, message order - switching: forwarding, routing, contention, multicast, scalability - performance: latency, throughput, burstiness, jitter - applications: digital libraries, remote file access, video - data representation: presentation formatting, compression, encryption.
Computer Graphics (CS 433)
This course presents an introduction to computer graphics designed to give the student an overview of fundamental principles. Course work stresses the reduction of concepts to practice in the form of numerous programming assignments. The course will include an overview of common graphics hardware, 2D and 3D transformations and viewing, and basic raster graphics concepts such as scan-conversion, bitblt's, and clipping. Methods for modeling objects as polygonal meshes or smooth surfaces, and as rendering such as hidden-surface removal, shading, illumination, and shadows will be investigated.
Principles of Operating Systems (CS 452)
Concepts of modern operating systems; concurrent processes; process synchronization and communication; resource allocation; kernels; deadlock; memory management; file systems.
Game Development (CS 465)
This course provides an introduction to video game development. We will explore game design (not just computer games, but all games) and continue with an examination of game prototyping. Once we have working prototypes, we will continue with the development of a complete 2D computer game. The remaining course topics include: designing the game engine, rendering the graphics to the screen, and artificial intelligence.
Automata, Grammars and Languages (CS 473)
Introduction to models of computation (finite automata, pushdown automata, Turing machines), representations of languages (regular expressions, context-free grammars), and the basic hierarchy of languages (regular, context-free, decidable, and undecidable languages).
Internship (CS 493)
Specialized work on an individual basis, consisting of training and practice in actual service in a technical, business, or governmental establishment.