300

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 and CS 273, both with a grade of C- or higher

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 combinational 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 higher

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. Fee: $100

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, computability, and complexity.

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.

CS 364 Business and Technology Ventures

Professional development topics for a career in technology, including business law, contract law, business creation and incorporation, policy, negotiation, personal finance, and employment.

3

CS 368 Computer Science 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 371 Object-Oriented Design Laboratory

Laboratory to support CS 301.

1

Corequisites

CS 301

CS 376 Unix/Linux Tools Laboratory

This laboratory introduces Unix/Linux 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