CS 220 Software Design II
This is a second course in the design of programs. Emphasis is placed on data abstraction and its application in design. Definitions of abstract data types are examined. The following structures are examined as methods for implementing data abstractions: recursion, generics, stacks, queues, strings, and various linked lists. Students will be expected to write several programs using these techniques in a modern programming language. Prerequisite: CS 120; concurrent enrollment in CS 225 recommended. Offered Fall, Spring.
CS 272 Digital Circuit Design for Microcontrollers I
This course is an introduction to digital circuit design in the context of embedded microcontroller devices. This course includes flip-flops, sequential and combinational logic units (e.g., shift registers, half-adders, encoders * decoders, multiplexers), state machines, analog to digital, and digital to analog conversion. Prerequisite: CS 225; MTH 207. Offered Occasionally.
CS 353 Analysis of Algorithm Complexity
An in-depth analysis of the computational complexity of a wide range of algorithms for problems of fundamental importance to computer science. Algorithms to be examined include: sorting, pattern matching and various graph algorithms. Prerequisite: CS 340; MTH 207. Offered Fall - Even Numbered Years.
CS 370 Computer Architecture
A presentation of the logical organization of modern digital computers. Topics include performance evaluation, instruction set design, computer arithmetic, processor control, pipelining, cache memory, memory hierarchy, memory and system buses, and I/O organization. Prerequisite: CS 270. Offered Fall, Spring.
CS 402 Web Application Development
This course will give a detailed description of the core concepts and general principles of web application development. The course will cover various protocols, programming languages, scripting languages, data storage and security, layered software architectures, and graphical interface design as they relate to web development. Students will apply these techniques to the development of medium scale web application. This course is taught largely at an undergraduate level. Graduate students will have additional course requirements/expectations. Prerequisite: CS 202; CS 340; junior standing. Offered Spring.
CS 418 Mobile Application Development
An introduction to the concepts and techniques of application development for mobile devices. The course will examine the design constraints of mobile devices, how mobile applications can leverage external data resources, integration of sensor data and the development environments of the chosen platform (e.g. iOS, Android and others). This course is taught largely at an undergraduate level. Graduate students will have additional course requirements/expectations. Repeatable for credit with different topic - maximum six. Prerequisite: CS 340; junior standing. Offered Occasionally.
CS 421 Programming Language Concepts
A comparative study of the concepts underlying the design of contemporary high-level programming languages, including imperative, functional, logic and object-oriented paradigms; formal representation of syntax and semantics; control structures; data and procedural abstraction; scope and extent; parallelism and exception handling. This course is taught largely at an undergraduate level. Graduate students will have additional course requirements/expectations. Prerequisite: CS 340; CS 225 or MTH 225; junior standing. Offered Fall, Spring.
CS 431 Introduction to Robotics
This course is a hands-on introduction to the algorithms and techniques required to write robot control software. Topics include the components of mobile robots and robot manipulators, manipulator kinematics, robot task planning, sensing, sensor fusion, visual servoing, and robot control concepts. This course is taught largely at an undergraduate level. Graduate students have additional course requirements/expectations. Prerequisite: CS 340; junior standing. Offered Occasionally.
CS 449 Advances in Software Engineering
This course introduces advanced topics in software engineering. Topics include prototyping models, risk analysis, component-oriented software development, software architectures, software reuse, software metrics, and quality analysis. This course is taught largely at an undergraduate level. Graduate students have additional course requirements/expectations. Prerequisite: CS 440; junior standing. Offered Occasionally.
CS 451 User Interface Design
This course focuses on the design and implementation of user interfaces. The topics include characteristics of user interfaces, user profiles, user interface design principles, methods and tools for user interface development, evolution of user interfaces, evaluation of user interfaces, and case studies. This course is taught largely at an undergraduate level. Graduate students have additional course requirements/expectations. Prerequisite: CS 340; junior standing. Offered Occasionally.
CS 452 Artificial Intelligence
This course is an introduction to the fundamental principles of artificial intelligence. Topics include search strategies, adversarial search, constraint satisfaction, planning and scheduling, logic and inference, accounting for uncertainty, and probabilistic reasoning. Projects include writing a substantial artificial intelligence application program. This course is taught largely at an undergraduate level. Graduate students will have additional course requirements/expectations. Prerequisite: CS 340; junior standing. Offered Fall - Odd Numbered Years.
CS 454 Digital Image Processing
This course introduces the fundamentals of digital image processing techniques with an emphasis on the design and implementation of image processing algorithms. Topics include color models, point-processing techniques, convolution, Fourier domain processing, the discrete cosine transform, image compression methodologies, image restoration and enhancement, sampling, and image display. This course is taught largely at an undergraduate level. Graduate students have additional course requirements/expectations. Prerequisite: CS 340; junior standing. Offered Occasionally.
CS 455 Fundamentals of Information Security
This course presents the fundamental concepts of information security. Basic policies, techniques and tools for maintaining the security of host computers, information networks and computer software are presented. Topics include encryption, authentication, access control, types of attacks and mitigations, software security, network security protocols, and the concepts of trust, privacy and ethics. Students are expected to compare security policies and techniques, apply concepts using modern tools and techniques, and explore recent security events. This course is taught largely at an undergraduate level. Graduate students will have additional course requirements/expectations. Prerequisite: CS 270, CS 340; junior standing. Offered Spring.
CS 457 Machine Learning
This course explores how to design and build software agents that are able to learn from experience and decide on courses of action without being explicitly programmed. Topics include regression algorithms, decision trees, support vector machines, neural networks, deep learning, Markov decision processes, and reinforcement learning. Emphasis is placed on algorithmic implementation. This course is taught largely at an undergraduate level. Graduate students have additional course requirements/expectations. Prerequisite: CS 340; MTH 207; junior standing. Offered Fall - Even Numbered Years.
CS 461 Introduction to Data Science
This course examines key components of the data science lifecycle including data collection and cleaning; exploratory data analysis and visualization; and extracting insight via statistical models and machine learning algorithms for regression, classification, and clustering. Algorithmic efficiency and scalability are emphasized, and techniques for working with big data are introduced. Students use a modern programming language (e.g., R, Python) with appropriate packages suitable for data analysis. This course is taught largely at an undergraduate level. Graduate students have additional course requirements/expectations. Prerequisite: CS 340; MTH 207; junior standing. Offered Occasionally.
CS 464 Advanced Database Management Systems
This course covers advanced topics in database management systems. Topics include the relational data model, relational calculus, embedded SQL programming, database application programming, indexing, system software and storage structures for databases, concurrency control, crash recovery, database administration, parallel and distributed databases, and object-oriented databases. This course is taught largely at an undergraduate level. Graduate students have additional course requirements/expectations. Prerequisite: CS 364; junior standing. Offered Occasionally.
CS 470 Parallel and Distributed Computing
A study of architectures, control software, and applications for parallel and distributed systems. A survey of parallel and distributed architectures including data flow machines, vector processors, shared memory multiprocessors, and message based multiprocessors. Software topics include process communication and synchronization, global state maintenance, negotiation, scheduling, data parallelism, control parallelism, and languages for parallel and distributed computing. This course is taught largely at an undergraduate level. Graduate students will have additional course requirements/expectations. Prerequisite: CS 370; junior standing. Offered Occasionally.
CS 472 Internet of Things
This course explores the possibilities which are created when everyday things become connected to the internet and how this can create new ways for humans to interact with computation and for computation to enable human activities. This course involves building small, sensor equipped hardware devices and cloud-based software systems using various technologies. This course is taught largely at an undergraduate level. Graduate students have additional course requirements/expectations. Prerequisite: CS 340; CS 372; junior standing. Offered Occasionally.
CS 475 Computer Graphics and Modeling
This course is an introduction to computer graphics in modern computing environments. Topics include geometric transformations, fundamental drawing algorithms, scalable vector graphics (SVG), OpenGL, WebGL, surface shaders, scene graphics, photorealistic rendering, surface mesh data structures, animation, modeling, and GPGPU computing. This course is taught largely at an undergraduate level. Graduate students have additional course requirements/expectations. Prerequisite: CS 340; MTH 207; junior standing. Offered Occasionally.
CS 499 Research in Computer Science
An opportunity to become acquainted with literature in the field and to work on a professional level research project within an area of interest of the computer science faculty. A seminar reviewing the results of the study will be a requirement for completion of the course. Repeatable for credit - maximum six. Consent of instructor. Offered Fall, Spring.