Course Offerings

CS-001 Ots Network Course (0 credits)
CS-101 Introduction to Computer Science (3 credits)
Hands-on introduction to computer science and engineering. Meets with electrical and computer engineering sections of Engineering 101. Includes short introductions to programming, robotics, and sensors. Fall.
CS-105 Survey of Computer Science (3 credits)
Intended for students who are not computer science or engineering majors. Provides broad introduction to various concepts and tools used in computing. Topics include number systems, Boolean algebra, problem solving, computability, databases, networking, Internet/Web, user interfaces, artificial intelligence, robotics, and short introduction to programming. Background should include two semesters of high school algebra. Credit not given for more than one of CS 101 or 105 or ENGR 101.
CS-205 Programming for the Sciences (3 credits)
Explores the power and limitations of using computers in the sciences. Includes the study of various approaches to solving scientific problems such as numerical representations, computational numerical methods, and scientific simulations. Course may not be counted toward graduation for computer science or engineering majors. Prerequisite: MATH 134 or 221.
CS-210 Fundamentals of Programming I (3 credits)
Emphasizes problem-solving techniques used in the analysis and design of software solutions, including structured top-down design, abstraction, good programming style, debugging, and testing. Programming constructs covered include control structures, functions, and basic, and aggregate data types. Introduction to recursion and dynamic allocation. Fall, spring.
CS-215 Fundamentals of Programming II (3 credits)
Project and problem-solving course emphasizes the use of classes for encapsulation of abstract data types and abstract data structures. Topics include classes, templates, dynamic allocation, searching and sorting, recursion, and exception handling. Introduction to algorithm analysis. Prerequisite: Grade of C- or better in CS 210.
CS-220 Logic Design and Machine Organization (3 credits)
Introduction to logic design and computer hardware concepts. Topics include Boolean algebra, number representations, sequential logic, counters and registers, microcomputer architecture, and assembly language programming. Spring.
CS-290 Object Oriented Design (3 credits)
In-depth study of abstract data types and objects, including inheritance and polymorphism, frameworks and design patterns, and the use of these principles in problem solving and program design. Prerequisite: CS 215. Spring.
CS-310 Puzzle Programming (1 credit)
Study of problem solving under time pressure. Simulation of the programming contest environment. All problems considered come from past programming contests. Highly recommended for any student interested in programming competitions. Prerequisite: CS 215 or permission of instructor. May be repeated for up to three credit hours. Fall.
CS-315 Algorithms and Data Structures (3 credits)
Design and implementation of algorithms and advanced data structures with attention to complexity and space analysis. Problem-solving strategies including greedy and divide-and-conquer algorithms as well as dynamic programming techniques. Prerequisites: CS 215, MATH 370. Spring.
CS-320 Computer Architecture (3 credits)
Studies the architecture of computer systems from four-bit machines to supercomputers. Memory systems, I/O processors, and multi-computer systems are studied in detail. RISC, CISC and Neural Nets are introduced. Establishes the relationship of hardware and software. Includes hands-on projects dealing with graphical user interfaces and their implementation. Prerequisites: CS 210; CS 220 or EE 254. Spring.
CS-350 Computer/Human Interaction (3 credits)
Study of user interface design, including ergonomic factors. Includes hands-on projects dealing with graphical user interfaces and their implementation. Prerequisite: CS 215.
CS-355 Computer Graphics (3 credits)
Fundamental course in computer graphics. Topics include rendering two and three-dimensional images, two and three-dimensional transformations, line clipping, hidden lines, shading, and perspective projections. Prerequisites: CS 215; MATH 323.
CS-375 UNIX System Programming (3 credits)
Coverage of UNIX software development and UNIX administration. Includes discussion of common shells and scripting languages, X Windows, and interprocess communication. Prerequisite: CS 215.
CS-376 Small Computer Software (3 credits)
Introduction to graphical user interface provided by Windows(TM) operating system using C#.NET. Topics include console applications, windows forms, elementary graphics, ASP.Net web forms, ADO.NET, TCP/IP connection between computers, and dynamic-link libraries (DLLs), and/or device drivers. Prerequisites: ENGR 123 or CS 210; EE 254 or CS 220. Same as EE 356. Fall.
CS-380 Programming Languages (3 credits)
Comparative analysis of selected high-level languages. Covers virtual computers represented by various programming languages, representation of data types, sequence control constructs, data access, scoping, typing systems, runtime storage management, languages semantics, alternative, programming paradigms, and parallel language constructs. Prerequisite: CS 215. Fall.
CS-381 Formal Languages (3 credits)
Models of computation including finite automata, regular grammars, regular expressions, pushdown automata, context-free grammars, Turing machines, computability, and undecidability. Prerequisites: CS 210; MATH 370. Fall.
CS-390 Software Engineering (3 credits)
Study of the software design and development process in the context of a large group-programming project. Topics covered include: project management, software management, requirements and specifications methods, software design and implementation, verification and validation, aspects of software testing and documentation standards, technical documents, contracts, risks, and liabilities. Prerequisite: CS 215. Recommended: CS 290. Fall.
CS-391 Software Engineering II (3 credits)
A continuation of CS-390 Software Engineering. Real-world experience developing a large-scale, ongoing software applications for external clients. Topics covered include: project management, quality assurance, and expectation management. Prerequisite: CS 390. Spring.
CS-395 Software Project Management (3 credits)
Issues and techniques for managing software projects. Project evaluation, scope management, stakeholder management, risk assessment, scheduling, quality, rework, negotiation and conflict management. Ethics of software development. Prerequisite or corequisite: CS 390.
CS-413 Software Security (3 credits)
Provides a systematic treatment for software design and implementation to create computer programs and applications that are secure. Types of vulnerabilities and security issues involving software implementation and as well as web, cryptographic, and networking applications are identified and solutions provided including software development lifecycle models that incorporate security. Prerequisite or corequisite: CS 390.
CS-415 Cryptography (3 credits)
Introduces conventional and public-key cryptography, cryptosystems such as DES and RSA, and applications of cryptography to network and system security. Prerequisites: CS 215; MATH 370.
CS-430 Artificial Intelligence (3 credits)
Basic ideas and techniques underlying the design of intelligent computer systems. Topics include heuristic search, problem solving, game playing, knowledge representation, logical inference, and planning. Advanced topics such as robotics, expert systems, learning, and language understanding as time allows. Prerequisite: CS 215. Recommended: CS 315, 380.
CS-440 Databases (3 credits)
Presents database concepts and architectures. Topics include basic file structures, data dictionaries, data models, languages for data definition and queries, and transaction management for data security, concurrency control, and reliability. Hands-on experience with database and query systems. Prerequisites: CS 215; MATH 222.
CS-445 Programming in the Large (3 credits)
Techniques for scaling software to large numbers of users. Topics will include web application programming, database scaling techniques, using web services and APIs, virtualization and containers. Prerequisite: CS 380.
CS-455 Advanced Computer Graphics (3 credits)
Advanced course in computer graphics. Topics include raster graphics, texture mapping, curve approximation, and ray tracing. Prerequisite: CS 355.
CS-470 Operating Systems (3 credits)
Components of operating systems. Tasking and processing, process coordination and scheduling, memory organization and management, device management, security, networks, distributed and real-time systems. Prerequisite: CS 215. Recommended corequisite: CS 320. Spring.
CS-472 Concurrent & Parallel Programming (3 credits)
The various programming models used for parallel architectures. Topics will range from concurrent programming on clusters, to multi-core programming, to highly parallel and GPU programming. Parallel algorithms and strategies. Prerequisite: CS 470.
CS-473 Mobile Application Development (3 credits)
Hands-on, project-oriented course that explores the principles and tools involved in the design and construction of applications for mobile devices. Topics include and overview of mobile application development, application architecture, managing application resources, designing user interfaces, data storage options, integrating audio and video, and location-based services. Each offering will concentrate on one of the current mobile platforms. Repeatable course for different mobile platform content. Prerequisite: CS 215. Recommended: CS 290.
CS-475 Networks (3 credits)
Digital data communication systems in hardware and software, synchronous and asynchronous communication, standards, protocols, network configurations, network applications. Prerequisites: CS 215; MATH 222.
CS-478 Embedded Systems and Real-Time Programming (3 credits)
Covers real-time programming techniques that are commonly used on embedded systems. Topics include real-time operating system concepts, concurrent programming and task scheduling algorithms, mutual exclusion and synchronization methods, and interprocess communication. Students gain real-world experience by writing applications for two popular embedded operating systems. Prerequisites: EE 354 or CS 215; or permission of instructor. Same as EE 458. Spring.
CS-491 Software Quality Assurance (3 credits)
Various aspects of software quality assurance. Dynamic analysis approaches, such as assertions and testing. Static analysis approaches such as reviews and verification. Emphasis on various testing techniques such as unit, integration, system, acceptance and regression testing. Prerequisite or corequisite: CS 390.
CS-494 Senior Project Seminar Programming (0 credits)
Provides guidance for the selection of a topic for the senior design project. Projects (some industry-sponsored) are presented for student selection. An outline and short presentation of the project selected is required. Prerequisite: 12 hours of 300-level computer science courses. Computer engineers may substitute EE 494. Spring.
CS-495 Senior Project Phase I (3 credits)
Plan the computer science project and formulate the preliminary design under the guidance of faculty and industrial advisors. Discussion of the relationship of computer science as a discipline to the humanities and social sciences. Preparation of a written formal proposal and an oral presentation of the proposal. Seminar session addresses ethical, environmental, economic, safety, and ergonomic aspects of computer science. Written reaction to seminar topics. Prerequisites: CS 494; GPA of at least 2.0. Computer engineers may substitute EE 495. Fall.
CS-497 Senior Project Phase II Programming (3 credits)
Student completes and builds the design proposed in CS 495. A formal design review is conducted early in the semester. A practice oral report, a written final report, a final oral report, and a demonstration of the completed project are required. Prerequisite: CS 495. Computer engineers may substitute EE 497.
CS-498 Independent Study in Computer Science Programming (1-3 credits)
Independent study of a topic of interest to the student. Requires faculty sponsor and approved detailed study plan.
CS-499 Special Topics in Computer Science Programming (1-3 credits)
Study of topics of special interest. Topics will be announced. May be repeated. Prerequisites will be announced when scheduled.