300
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
Continues the study of computer science and software engineering methodologies. Analysis of common data structures, time and space efficiency, stacks, queues, linked lists, basic trees, recursion, searching, and sorting algorithms.
3
Prerequisites
CS 203 with a grade of C- or better.
Advanced data structures, including advanced trees, graphs, hash tables, heaps. Study of the program language features required to support templates, inheritance, and exception handling.
3
Prerequisites
CS 303
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. First offering in spring 2014, replaces
CS 303.
3
Prerequisites
CS 203 with a grade of C- or better.
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. First offering in spring 2016, replaces
CS 411.
3
Prerequisites
CS 305,
MTH 311, and
EGR 361 or
MTH 461.
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. First offering in fall 2015.
3
Prerequisites
CS 303 or
CS 305 or corequisite.
Corequisites
CS 303 or
CS 305 or prerequisite.
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. First offering in spring 2016, replaces
CS 446.
3
Prerequisites
CS 305 and
CS 333 or
EE 333.
Software lifecycle models. Requirements engineering. Planning and managing software projects. Software design methods. System integration, software quality assurance, testing, and validation. Software maintenance. First offering in spring 2016, replaces
CS 441.
3
Prerequisites
CS 301,
CS 305.
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 304 or
CS 305.
Introduction to finite automata, Turing machines, formal languages, and computability. First offering in fall 2015, replaces
CS 451.
3
Prerequisites
CS 203 with a grade of C- or better,
MTH 311
Lexical analysis, syntactic analysis, type checking, and code generation. Introduction to optimization. First offering in spring 2016, replaces
CS 452.
3
Prerequisites
CS 305,
CS 357, and
CS 333 or
EE 333.
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. First offering in fall 2015, replaces
CS 400.
2
Prerequisites
Upper division standing.
Weekly three-hour laboratory to support CS 301.
1
Corequisites
CS 301
Weekly 3-hour laboratory to support CS 303. Use of software tools and data structures to support software development (UNIX operating system).
1
Prerequisites
CS 303 or corequisite.
Corequisites
CS 303 or prerequisite.
Weekly 3-hour laboratory. Assembly language and systems programming.
1
Prerequisites
CS 303
Weekly 3-hour laboratory. Introduces UNIX commands and tools for software development and testing. Includes scripting languages. First offering in spring 2014, replaces
CS 373.
1
Prerequisites
CS 203 with a grade of C- or better.
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.
1
Prerequisites
CS 303 or
CS 305.