CS - Computer Science

CS 203 Introduction to Computer Science

Create a foundation for computer science and the software development process. Emphasis on good design and programming techniques through practice in writing, running, and debugging programs. Study of a programming language which incorporates objects, structured control statements, classes, inheritance, strong data typing, and sub-programs with parameters. No programming experience expected.

3

Corequisites

CS 273

CS 273 Computer Science Laboratory

Weekly three-hour laboratory to support CS 203.

1

Corequisites

CS 203

CS 290 Directed Study

Credit arranged.

Variable

CS 301 Object-Oriented Design

Continue to build a computer science foundation. Study of intermediate programming language constructs: event handling, graphical user interfaces, threads, and networking. Introduction to the software engineering process and programming-in-the-large.

3

Prerequisites

CS 203 with a grade of C- or better.

Corequisites

CS 371

CS 305 Data Structures

Continues the study of computer science and software engineering methodologies with the C programming language. Analysis of common data structures, time and space efficiency, stacks, queues, linked lists, trees, graphs, hash tables, recursion, searching, and sorting algorithms.

3

Prerequisites

CS 203 with a grade of C- or better.

CS 324 Analysis of Algorithms

Design, analysis and correctness proofs of important algorithms from areas such as combinatorics, seminumerical algorithms, data storage and retrieval, systems programming, and artificial intelligence. Includes a study of complexity theory.
3

Prerequisites

CS 305 with a grade of C- or better, MTH 311 with a grade of C- or better, EGR 361 or MTH 461

CS 333 Computer Architecture

Introduction to boolean and sequential logic. Introduction to computer system hardware including Arithmetic Logic Unit (ALU), main memory, cache memory, I/O devices, busses and interfaces, control unit, addressing techniques, and the MIPS assembly language.
3

Prerequisites

CS 305 with a grade of C- or better

CS 334 Operating Systems

Functions, structure, design, and problems of operating systems. Concepts and principles of operating system design and implementation including file system, CPU scheduling, memory management (including virtual memory), deadlocks in computer systems, concurrent processes and programming, threads, and protection.
3

Prerequisites

CS 305 with a grade of C- or higher, CS 333, CS 376

CS 341 Software Engineering

Software lifecycle models. Requirements engineering. Planning and managing software projects. Software design methods. System integration, software quality assurance, testing, and validation. Software maintenance.
3

Prerequisites

CS 301 with a grade of C- or better, CS 305 with a grade of C- or better.

CS 352 Programming Languages

Comparative analysis of several modern high level languages in terms of data types and control structures, with emphasis on run-time behavior of programs.

3

Prerequisites

CS 305 with a grade of C- or better.

CS 357 Theory of Computation

Introduction to finite automata, Turing machines, formal languages, and computability.
3

Prerequisites

CS 305 with a grade of C- or better, MTH 311 with a grade of C- or better.

CS 358 Compiler Design

Lexical analysis, syntactic analysis, type checking, and code generation. Introduction to optimization.
3

Prerequisites

CS 305 with a grade of C- or better, CS 357, CS 333 or EE 333.

CS 368 Seminar

In-depth study of professional responsibility in the field of computer science. Students are expected to read journal papers, articles, and books, participate in class discussions, and give presentations.
2

Prerequisites

Upper division standing.

CS 369 Advanced Seminar

In-depth study of professional responsibility in the field of computer science. Students are expected to read journal papers, articles, and books, participate in class discussions, and give presentations. Students will also research a current topic, and make the presentation to an audience outside the University. Students may not receive credit for both CS 368 and CS 369.
3

Prerequisites

Upper division standing

CS 371 Object-Oriented Design Laboratory

Weekly three-hour laboratory to support CS 301.

1

Corequisites

CS 301

CS 376 UNIX Tools Laboratory

Weekly 3-hour laboratory. Introduces UNIX commands and tools for software development and testing. Includes scripting languages. 

1

Prerequisites

CS 203 with a grade of C- or better.

CS 382 Advanced Programming Techniques

The course focuses on developing and practicing techniques for rapid programming in a small team environment: approaches to problem assessment, selection of data structures and algorithms, implementation, and testing. Students will hone their skills by working in small teams to produce correct solutions to a wide variety of computing problems under time constraints. Course is graded Pass / No Pass.

1

Prerequisites

CS 305 with a grade of C- or better

CS 421 Artificial Intelligence

The history and applications of artificial intelligence. Topics include: inference, knowledge representation, search, cognitive architecture, decision making under uncertainty, and machine learning.

3

Prerequisites

CS 305 with a grade of C- or better

CS 423 Computational Biology

Algorithmic and analysis techniques for biological data such as DNA, RNA, proteins, and gene expression. Topics include molecular biology, alignment and searching algorithms, sequence evolution algorithms, genetic trees, and analysis of microarray data. This course is interdisciplinary and assumes programming skills.

3

Prerequisites

MTH 201, CS 203 with a grade of C- or better; one of the following: BIO 205, BIO 207, CS 305 with a grade of C- or better

Cross Listed Courses

BIO 423

CS 425 Introduction to Robotics

Concepts in robotics including state estimation, filtering, perception, localization, and mapping. Introduction to various topics in computer vision.  Methods for robotic control and learning. Current topics in applied robotics.
3

Prerequisites

CS 305 with a grade of C- or higher, MTH 201; MTH 361, or MTH 461 recommended

CS 427 Internet of Things

A study of "smart," interconnected devices with myriad sensing capabilities, known as the "Internet of Things" (IoT). Today, IoT exists in our home appliances, automobiles, airplanes, and on our wrists - tracking how we exercise, and measuring and analyzing our sleep. Topic includes IoT technologies, architectures, protocols, data storage, and IoT security and privacy.
3

Prerequisites

CS 305 with a grade of C- or higher

CS 432 Computer Graphics

An examination of topics in computer graphics, including graphical output devices, line-drawing and clipping algorithms, representation and drawing of curves, techniques for transforming graphical images, and methods of modeling and rendering in three-dimensions. 

3

Prerequisites

MTH 201, CS 305 with a grade of C- or better, MTH 341 recommended.

CS 434 Database Management Systems

The design and implementation of databases with an emphasis on the use of relational database management systems (DBMS). Query languages, table and index design, query evaluation, transaction management, tuning, security.

3

Prerequisites

CS 305 with a grade of C- or better

CS 436 Parallel Computing

A study of architectures, algorithms and programming/debugging techniques that employ parallelism to increase performance of computer programs. Topics include parallel computer architectures, parallel programming languages for distributed and shared-memory multiprocessors and code optimization.
3

Prerequisites

CS 301, CS 305, CS 333, (or corequisite)

Corequisites

CS 333 (or prerequisite)

CS 438 Introduction to Big Data Analytics

As more data becomes available, solutions are needed to store, process, extract, interpret, and visualize large amounts of data for scientific discovery and innovation. This course covers algorithms and technologies for the storage, analysis, and interpretation of large, diverse, and heterogeneous data sets.
3

Prerequisites

CS 305 with a grade of C- or higher; EGR 361 or MTH 361

CS 443 Cloud Computing

Cloud computing is the delivery of on-demand computing resources, from applications to data centers, over the Internet with pay-as-you-go pricing. This course is a study of fundamentals and capabilities of cloud across various service models. Topics include cloud infrastructure, programming models, and security and privacy issues in cloud computing. Includes various case studies from the industry.
3

Prerequisites

CS 305 with a grade of C- or higher

CS 445 Computer Networks and Internetworking

A broad first course in computer networks and internetworking. OSI and TCP/IP layered models, TCP/IP protocol suite, transmission media, local area networks, network and transport-layer protocols, internetworking, internet addressing and routing.

3

Prerequisites

CS 305 with a grade of C- or better

CS 447 Game Design and Theory

This course will provide an introduction to the field of computer game design. The philosophy, objectives, and history of this field will be explored. In addition, the course will emphasize practical applications of some of the more prevalent techniques.

3

Prerequisites

CS 305 with a grade of C- or better

CS 448 Topics in Cybersecurity

Contemporary topics in Cybersecurity. Topics in this fast-moving field change from year to year, but each offering will introduce these core fundamentals: confidentiality, integrity, availability, access control, and defensive programming techniques.

3

Prerequisites

CS 305 with a C- or higher, CS 376

CS 483 Computer Science Capstone Project I

A major design experience based on the knowledge and skills acquired in earlier course work and incorporating appropriate standards and multiple realistic constraints. Projects have some combination of the following characteristics: realism, communication, exposure, teamwork, learning, and related opportunities. 

2

Prerequisites

EGR 300

CS 484 Computer Science Capstone Project II

Continuation of a major design experience based on the knowledge and skills acquired in earlier course work and incorporating appropriate standards and multiple realistic constraints. Projects have some combination of the following characteristics: realism, communication, exposure, teamwork, learning, and related opportunities. 
3

Prerequisites

CS 483

CS 490 Directed Study

Selected study or project in computer science for upper-division students. Must be arranged between the student and an individual faculty member and subsequently approved by the dean of engineering. No more than three hours of directed study taken at the University may be used for elective credits to satisfy degree requirements.
Credit arranged.

CS 491 One Time Course Offering

Credit arranged.

Variable

CS 492 One Time Course Offering

Credit arranged.

Variable

CS 493 Research

Faculty-directed student research. Before enrolling, a student must consult with a faculty member to define the project. May be repeated for credit.
1-3

Prerequisites

Upper division standing.

CS 499 Senior Thesis

Research, study, or original work under the direction of a faculty mentor, leading to a scholarly thesis document with a public presentation of results. Requires approval of thesis director, department chair, dean, and the director of the honors program, when appropriate.

Variable

Prerequisites

Senior standing; 3.0 G.P.A. in the thesis area or good standing in the honors program.

CS 521 Artificial Intelligence

Applications of artificial intelligence including advanced topics include: inference, knowledge representation, search, cognitive architecture, decision making under uncertainty, and machine learning.
3

CS 523 Computational Biology

Study of advanced algorithmic and analysis techniques for biological data such as DNA, RNA, proteins, and gene expression.  Topics and project include molecular biology, alignment and searching algorithms, sequence evolution algorithms, genetic trees, and analysis of microarray data. This course is interdisciplinary and assumes programming skills.
3

CS 532 Computer Graphics

An examination of topics in computer graphics, including graphical output devices, line-drawing and clipping algorithms, representation and drawing of curves, techniques for transforming graphical images, and methods of modeling and rendering in three-dimensions. 

3

CS 534 Database Management Systems

The design and implementation of databases with an emphasis on the use of relational database management systems (DBMS).  Special project using DBMS.  Exploration of query languages, table and index design, query evaluation, transaction management, tuning, security.
3

CS 542 Software Engineering for Internet Applications

Advanced design, development, and evaluation or web-based applications. Human factors, security aspects, and databases are emphasized.
3

CS 545 Computer Networks and Internetworking

Computer networks and internetworking. Specialized applications of OSI and TCP/IP layered models, TCP/IP protocol suite, transmission media, local area networks, network and transport-layer protocols, internetworking, internet addressing and routing.
3

CS 547 Game Design and Theory

Computer game design emphasizing the philosophy, objectives, and history of this field. In addition, the course will emphasize advanced applications of some of the more prevalent techniques.
3

CS 548 Topics in Cybersecurity

Cryptography, program security, security in operating systems, security in computer networks, security administration and policies. 

3

CS 590 Directed Study

Credit arranged.

Variable

CS 591 One Time Course Offering

Credit arranged.

Variable

CS 592 One Time Course Offering

Credit arranged.

Variable

CS 593 Research

Faculty-directed student research. Before enrolling, a student must consult with a faculty member to define the project. May be repeated for credit.
1-3